class HTTP::Client
def perform(req, options)
def perform(req, options) verify_connection!(req.uri) @state = :dirty @connection ||= HTTP::Connection.new(req, options) unless @connection.failed_proxy_connect? @connection.send_request(req) @connection.read_headers! end res = Response.new( :status => @connection.status_code, :version => @connection.http_version, :headers => @connection.headers, :proxy_headers => @connection.proxy_response_headers, :connection => @connection, :encoding => options.encoding, :uri => req.uri ) res = options.features.inject(res) do |response, (_name, feature)| feature.wrap_response(response) end @connection.finish_response if req.verb == :head @state = :clean res rescue close raise end