class HTTPClient::Session

def connect

Connect to the server
def connect
  site = @proxy || @dest
  retry_number = 0
  begin
    timeout(@connect_timeout, ConnectTimeoutError) do
      if str = @test_loopback_http_response.shift
        @socket = create_loopback_socket(site.host, site.port, str)
      elsif https?(@dest)
        @socket = SSLSocket.create_socket(self)
        @ssl_peer_cert = @socket.peer_cert
      else
        @socket = create_socket(site.host, site.port)
      end
      @socket.sync = @socket_sync
    end
  rescue RetryableResponse
    retry_number += 1
    if retry_number < @protocol_retry_count
      retry
    end
    raise BadResponseError.new("connect to the server failed with status #{@status} #{@reason}")
  rescue TimeoutError
    if @connect_retry == 0
      retry
    else
      retry_number += 1
      retry if retry_number < @connect_retry
    end
    close
    raise
  end
  @state = :WAIT
end