It seems likely to me that this library could be parameterized over an arbitrary concurrency-supporting monad using the MonadConc typeclass from concurrency. This is very useful for testing, as the dejafu package defines a ConcST monad (which has a MonadConc instance) that allows concurrent code to be run purely (so the set of possible execution paths will be explored deterministically).
It seems likely to me that this library could be parameterized over an arbitrary concurrency-supporting monad using the
MonadConctypeclass from concurrency. This is very useful for testing, as thedejafupackage defines aConcSTmonad (which has aMonadConcinstance) that allows concurrent code to be run purely (so the set of possible execution paths will be explored deterministically).