An async interface to the usual notion of mutex, in particular where lock
returns
a 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
Deferred.bind
.
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.