class HTTP::Client

def make_request(req, options)

def make_request(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(
    @connection.status_code,
    @connection.http_version,
    @connection.headers,
    Response::Body.new(@connection),
    req.uri
  )
  @connection.finish_response if req.verb == :head
  @state = :clean
  res
rescue
  # On any exception we reset the conn. This is a safety measure, to ensure
  # we don't have conns in a bad state resulting in mixed requests/responses
  close if persistent?
  raise
end