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