def send_request_with_webmock(&block)
request_signature = build_request_signature
WebMock::RequestRegistry.instance.requested_signatures.put(request_signature)
if WebMock.registered_request?(request_signature)
webmock_response = WebMock.response_for_request(request_signature)
WebMock::CallbackRegistry.invoke_callbacks(
{:lib => :em_http_request}, request_signature, webmock_response)
client = WebMockFakeHttpClient.new(nil)
client.on_error("WebMock timeout error") if webmock_response.should_timeout
client.setup(make_raw_response(webmock_response), @uri,
webmock_response.should_timeout ? "WebMock timeout error" : nil)
client
elsif WebMock.net_connect_allowed?(request_signature.uri)
http = send_request_without_webmock(&block)
http.callback {
if WebMock::CallbackRegistry.any_callbacks?
webmock_response = build_webmock_response(http)
WebMock::CallbackRegistry.invoke_callbacks(
{:lib => :em_http_request, :real_request => true}, request_signature,
webmock_response)
end
}
http
else
raise WebMock::NetConnectNotAllowedError.new(request_signature)
end
end