Caching asynchronous DNS resolver built on top of
GNU ADNS http://www.chiark.greenend.org.uk/~ian/adns/.
Resolves several IP addresses for one host (if available)
in round-robin fashion.
Throttles number of parallel requests (so DNS resolving continues to work
even under heavy load).
Errors are cached too (for one minute).
Handles CNAMEs (hsdns returns error for them).
This cache is tested in a long running web-crawler
(used in https://bazqux.com) so it should be safe to use it in real world
applications.