This monad transformer adds the ability to fail or throw exceptions
to a monad.

A sequence of actions succeeds, producing a value, only if all the
actions in the sequence are successful. If one fails with an error,
the rest of the sequence is skipped and the composite action fails
with that error.