class Async::HTTP::WebMockClientWrapper

def call(request)

def call(request)
  request.scheme ||= self.scheme
  request.authority ||= self.authority
  request_signature = build_request_signature(request)
  WebMock::RequestRegistry.instance.requested_signatures.put(request_signature)
  webmock_response = WebMock::StubRegistry.instance.response_for_request(request_signature)
  net_connect_allowed = WebMock.net_connect_allowed?(request_signature.uri)
  real_request = false
  if webmock_response
    webmock_response.raise_error_if_any
    raise Async::TimeoutError, 'WebMock timeout error' if webmock_response.should_timeout
    WebMockApplication.add_webmock_response(request, webmock_response)
    response = @webmock_client.call(request)
  elsif net_connect_allowed
    response = @network_client.call(request)
    real_request = true
  else
    raise WebMock::NetConnectNotAllowedError.new(request_signature) unless webmock_response
  end
  if WebMock::CallbackRegistry.any_callbacks?
    webmock_response ||= build_webmock_response(response)
    WebMock::CallbackRegistry.invoke_callbacks(
      {
        lib: :async_http_client,
        real_request: real_request
      },
      request_signature,
      webmock_response
    )
  end
  response
end