The <https://hackage.haskell.org/package/async async> library provides a
higher-level interface over threads, allowing users to conveniently run IO
operations asynchronously and wait for their results. This package is a
reimplementation of async using the 'MonadConc' abstraction from
<https://hackage.haskell.org/package/concurrency concurrency>, providing
easy-to-use asynchronous operaitons within an easily-testable framework.
This library itself is tested with <https://hackage.haskell.org/package/dejafu
When these functions are used in an IO context, the behaviour should appear
identical to the original async package.