diff --git a/lib/webmock/http_lib_adapters/http_rb/client.rb b/lib/webmock/http_lib_adapters/http_rb/client.rb index 476e5511..2ef02461 100644 --- a/lib/webmock/http_lib_adapters/http_rb/client.rb +++ b/lib/webmock/http_lib_adapters/http_rb/client.rb @@ -5,9 +5,7 @@ class Client def perform(request, options) return __perform__(request, options) unless webmock_enabled? - response = WebMockPerform.new(request) { __perform__(request, options) }.exec - options.features.each { |_name, feature| response = feature.wrap_response(response) } - response + WebMockPerform.new(request, options) { __perform__(request, options) }.exec end def webmock_enabled? diff --git a/lib/webmock/http_lib_adapters/http_rb/webmock.rb b/lib/webmock/http_lib_adapters/http_rb/webmock.rb index f6d34c63..096e3a75 100644 --- a/lib/webmock/http_lib_adapters/http_rb/webmock.rb +++ b/lib/webmock/http_lib_adapters/http_rb/webmock.rb @@ -1,7 +1,8 @@ module HTTP class WebMockPerform - def initialize(request, &perform) + def initialize(request, options, &perform) @request = request + @options = options @perform = perform @request_signature = nil end @@ -38,7 +39,10 @@ def replay webmock_response.raise_error_if_any invoke_callbacks(webmock_response, real_request: false) - ::HTTP::Response.from_webmock @request, webmock_response, request_signature + response = ::HTTP::Response.from_webmock @request, webmock_response, request_signature + + @options.features.each { |_name, feature| response = feature.wrap_response(response) } + response end def raise_timeout_error