@@ -2744,7 +2744,7 @@ after action (Stream step state) = Stream step' state
27442744onException :: MonadCatch m => m b -> Stream m a -> Stream m a
27452745onException action str =
27462746 gbracket (return ()) MC.try return
2747− (\_ (_ :: MC.SomeException) -> nilM $ action)
2747+ (\_ (e :: MC.SomeException) -> nilM (action >> MC.throwM e))
27482748 (\_ -> str)
27492749
27502750{-# INLINE_NORMAL _onException #-}
@@ -2772,7 +2772,8 @@ _onException action (Stream step state) = Stream step' state
27722772{-# INLINE_NORMAL bracket #-}
27732773bracket :: MonadCatch m => m b -> (b -> m c) -> (b -> Stream m a) -> Stream m a
27742774bracket bef aft bet =
2775− gbracket bef MC.try aft (\a (_ :: SomeException) -> nilM $ aft a) bet
2775+ gbracket bef MC.try aft
2776+ (\a (e :: SomeException) -> nilM (aft a >> MC.throwM e)) bet
27762777
27772778data BracketState s v = BracketInit | BracketRun s v
27782779
@@ -2791,7 +2792,7 @@ _bracket bef aft bet = Stream step' BracketInit
27912792 -- res <- step gst state `MC.onException` aft v
27922793 res <- MC.try $ step gst state
27932794 case res of
2794− Left (_ :: SomeException) -> aft v >> return Stop
2795+ Left (e :: SomeException) -> aft v >> MC.throwM e >> return Stop
27952796 Right r -> case r of
27962797 Yield x s -> return $ Yield x (BracketRun (Stream step s) v)
27972798 Skip s -> return $ Skip (BracketRun (Stream step s) v)