View Source Req.Response.Async (req v0.5.1)

Asynchronous response body.

This is the response.body when making a request with into: :self, that is, streaming response body chunks to the current process mailbox.

This struct implements the Enumerable protocol where each element is a body chunk received from the current process mailbox. HTTP Trailer fields are ignored.

If the request is sent using HTTP/1, an extra process is spawned to consume messages from the underlying socket. On both HTTP/1 and HTTP/2 the messages are sent to the current process as soon as they arrive, as a firehose. If you wish to maximize request rate or have more control over how messages are streamed, use into: fun or into: collectable instead.

Note: This feature is currently experimental and it may change in future releases.

Examples

iex> resp = Req.get!("https://reqbin.org/ndjson?delay=1000", into: :self)
iex> resp.body
#Req.Response.Async<...>
iex> Enum.each(resp.body, &IO.puts/1)
# {"id":0}
# {"id":1}
# {"id":2}
:ok