catch package:concurrency

Catch an exception. This is only required to be able to catch exceptions raised by throw, unlike the more general Control.Exception.catch function. If you need to be able to catch all errors, you will have to use IO.
Handling exceptions from throwSTM.
Wait for any of the supplied asynchronous operations to complete. The value returned is a pair of the Async that completed, and the result that would be returned by wait on that Async. If multiple Asyncs complete or have completed, then the value returned corresponds to the first completed Async in the list.
Like waitAnyCatch, but also cancels the other asynchronous operations as soon as one has completed.
A version of waitAnyCatch that can be used inside a MonadSTM transaction.
Wait for an asynchronous action to complete, and return either Left e if the action raised an exception e, or Right a if it returned a value a.
A version of waitCatch that can be used inside a MonadSTM transaction.
Wait for the first of two Asyncs to finish.
Like waitEitherCatch, but also cancels both Asyncs before returning.
A version of waitEitherCatch that can be used inside a MonadSTM transaction.