Although using the conventional LWP::UserAgent is fast and easy it
does have some drawbacks - the code execution blocks until the
request has been completed and it is only possible to process one
request at a time. HTTP::Async attempts to address these limitations.

It gives you a 'Async' object that you can add requests to, and
then get the requests off as they finish. The actual sending and
receiving of the requests is abstracted. As soon as you add a
request it is transmitted, if there are too many requests in progress
at the moment they are queued. There is no concept of starting or
stopping - it runs continuously.

Whilst it is waiting to receive data it returns control to the code
that called it meaning that you can carry out processing whilst
fetching data from the network. All without forking or threading
- it is actually done using select lists.

Homepage:
https://metacpan.org/release/HTTP-Async
