This monad transformer extends a monad with the ability throw exceptions.

A sequence of actions terminates normally, producing a value,
only if none of the actions in the sequence throws an exception.
If one throws an exception, the rest of the sequence is skipped and
the composite action exits with that exception.