This is the Result monad in practice. It allows you to postpone error handling until the computation is done.