class HTTP::Client

def perform(req, options)

Perform a single (no follow) HTTP request
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,
    :auto_inflate  => options.feature(:auto_inflate),
    :uri           => req.uri
  )
  @connection.finish_response if req.verb == :head
  @state = :clean
  res
rescue
  close
  raise
end