Simplest sync Monad.
For async, see future.
future
For abstracting away dealing with fallible data, see option/result.
option
result