cachix-api-0.2.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