class WebMock::HttpLibAdapters::NetHttpAdapter

def request(request, body = nil, &block)

def request(request, body = nil, &block)
  request_signature = WebMock::NetHTTPUtility.request_signature_from_request(self, request, body)
  WebMock::RequestRegistry.instance.requested_signatures.put(request_signature)
  if webmock_response = WebMock::StubRegistry.instance.response_for_request(request_signature)
    @socket = Net::HTTP.socket_type.new
    WebMock::CallbackRegistry.invoke_callbacks(
      {lib: :net_http}, request_signature, webmock_response)
    build_net_http_response(webmock_response, request.uri, &block)
  elsif WebMock.net_connect_allowed?(request_signature.uri)
    check_right_http_connection
    after_request = lambda do |response|
      if WebMock::CallbackRegistry.any_callbacks?
        webmock_response = build_webmock_response(response)
        WebMock::CallbackRegistry.invoke_callbacks(
          {lib: :net_http, real_request: true}, request_signature, webmock_response)
      end
      response.extend Net::WebMockHTTPResponse
      block.call response if block
      response
    end
    super_with_after_request = lambda {
      response = super(request, nil, &nil)
      after_request.call(response)
    }
    if started?
      ensure_actual_connection
      super_with_after_request.call
    else
      start_with_connect {
        super_with_after_request.call
      }
    end
  else
    raise WebMock::NetConnectNotAllowedError.new(request_signature)
  end
end