class HTTPClient::Session

def connect_ssl_proxy(socket, uri)

def connect_ssl_proxy(socket, uri)
  req = HTTP::Message.new_connect_request(uri)
  @client.request_filter.each do |filter|
    filter.filter_request(req)
  end
  set_header(req)
  req.dump(@socket)
  @socket.flush unless @socket_sync
  res = HTTP::Message.new_response('')
  parse_header
  res.http_version, res.status, res.reason = @version, @status, @reason
  @headers.each do |key, value|
    res.header.set(key.to_s, value)
  end
  commands = @client.request_filter.collect { |filter|
    filter.filter_response(req, res)
  }
  if commands.find { |command| command == :retry }
    raise RetryableResponse.new
  end
  unless @status == 200
    raise BadResponseError.new("connect to ssl proxy failed with status #{@status} #{@reason}", res)
  end
end