cachix-api-0.3.0: src/Cachix/Api/Error.hs
module Cachix.Api.Error
( escalate,
escalateAs
)
where
import Control.Exception (Exception)
import Control.Monad.Catch (MonadThrow (throwM))
{- | Examples:
> escalate . maybeToEither err404
| Note that exceptions gets handled by warp and logged (user sees just "Internal server")
-}
escalateAs
:: (Exception exc, MonadThrow m)
=> (l -> exc)
-> Either l a
-> m a
escalateAs f = either (throwM . f) pure
escalate
:: (Exception exc, MonadThrow m)
=> Either exc a
-> m a
escalate = escalateAs id