diff --git a/lib/async/http/faraday/adapter.rb b/lib/async/http/faraday/adapter.rb index 8fac5d4..68a4fa1 100644 --- a/lib/async/http/faraday/adapter.rb +++ b/lib/async/http/faraday/adapter.rb @@ -119,9 +119,23 @@ def call(env) request = ::Protocol::HTTP::Request.new(endpoint.scheme, endpoint.authority, method, endpoint.path, nil, headers, body) with_timeout do - response = client.call(request) - - save_response(env, response.status, encoded_body(response), response.headers) + if env.stream_response? + response = env.stream_response do |&on_data| + response = client.call(request) + + response.each do |chunk| + on_data.call(chunk) + end + + response + end + + save_response(env, response.status, nil, response.headers) + else + response = client.call(request) + + save_response(env, response.status, encoded_body(response), response.headers) + end end end