Either package:protolude

Parse a string using the Read instance. Succeeds if there is exactly one valid result. A Left value indicates a parse error.
>>> readEither "123" :: Either Text Int
Right 123
>>> readEither "hello" :: Either Text Int
Left "Prelude.read: no parse"
Wait for the first of two Asyncs to finish. If the Async that finished first raised an exception, then the exception is re-thrown by waitEither.
Like waitEither, but also cancels both Asyncs before returning.
Wait for the first of two Asyncs to finish.
Like waitEitherCatch, but also cancels both Asyncs before returning.
Like waitEither, but the result is ignored.