If `Left` is always an error string, then I think we actually want to return a `Try[A]`. `Try` has two subtypes: `Return` and `Throw`.

https://github.com/twitter/util/blob/master/util-core/src/main/scala/com/twitter/util/Try.scala