An async interface to the usual notion of mutex, in particular where
unit Deferred.t rather than blocking.
Mutexes are almost never needed in async, which is based on cooperative threading, and
thus one can exercise control over interleaving simply by placement of
Rather than use a mutex, one common idiom is to use a
Sequencer to guarantee one
client at a time has access to a shared piece of state.