From abe65bcfb381bef3d45ab1e936762355f9add55b Mon Sep 17 00:00:00 2001 From: Jens Nolte <git@queezle.net> Date: Mon, 30 Aug 2021 22:24:23 +0200 Subject: [PATCH] Change peekAwaitable signature (use `try` to get old functionality) Co-authored-by: Jan Beinke <git@janbeinke.com> --- src/Quasar/Awaitable.hs | 6 ++++-- src/Quasar/Disposable.hs | 3 +-- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/Quasar/Awaitable.hs b/src/Quasar/Awaitable.hs index b63d55e..7c9cdba 100644 --- a/src/Quasar/Awaitable.hs +++ b/src/Quasar/Awaitable.hs @@ -86,8 +86,10 @@ awaitResult :: (IsAwaitable r a, MonadAwait m) => m a -> m r awaitResult = (await =<<) -peekAwaitable :: (IsAwaitable r a, MonadIO m) => a -> m (Maybe (Either SomeException r)) -peekAwaitable awaitable = liftIO $ runMaybeT $ try $ runQueryT queryFn (runAwaitable awaitable) +-- | Returns the result (in a `Just`) when the awaitable is completed, throws an `Exception` when the awaitable is +-- failed and returns `Nothing` otherwise. +peekAwaitable :: (IsAwaitable r a, MonadIO m) => a -> m (Maybe r) +peekAwaitable awaitable = liftIO $ runMaybeT $ runQueryT queryFn (runAwaitable awaitable) where queryFn :: STM a -> MaybeT IO a queryFn transaction = MaybeT $ atomically $ (Just <$> transaction) `orElse` pure Nothing diff --git a/src/Quasar/Disposable.hs b/src/Quasar/Disposable.hs index 0abab68..2d776cc 100644 --- a/src/Quasar/Disposable.hs +++ b/src/Quasar/Disposable.hs @@ -370,6 +370,5 @@ disposeEventually :: (IsDisposable a, MonadIO m) => ResourceManager -> a -> m () disposeEventually resourceManager disposable = liftIO $ do disposeCompleted <- dispose disposable peekAwaitable disposeCompleted >>= \case - Just (Left ex) -> throwIO ex - Just (Right ()) -> pure () + Just () -> pure () Nothing -> attachDisposable resourceManager disposable -- GitLab