-- | Catch an error in the base monad
catchError
  :: (Monad m, E.Error e) =>
     ConduitM i o (E.ErrorT e m) ()
     -> (e -> ConduitM i o (E.ErrorT e m) ())
     -> ConduitM i o (E.ErrorT e m) ()
catchError e h = errorC $ E.runErrorT $
    E.catchError (distribute e) (distribute . h)
catchError
  :: (Monad m, E.Error e) =>
     ConduitM i o (E.ErrorT e m) ()
     -> (e -> ConduitM i o (E.ErrorT e m) ())
     -> ConduitM i o (E.ErrorT e m) ()
catchError e h = errorC $ E.runErrorT $
    E.catchError (distribute e) (distribute . h)
catchError e h = errorC $ E.runErrorT $
    E.catchError (distribute e) (distribute . h)