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,
    :connection => @connection,
    :encoding   => options.encoding,
    :uri        => req.uri
  )
  @connection.finish_response if req.verb == :head
  @state = :clean
  res
rescue
  close
  raise
end