diff --git a/src/Quasar/Awaitable.hs b/src/Quasar/Awaitable.hs
index b63d55e5b05ead6af70c61623d4b9cc41d89e52f..7c9cdba4fbffda81de90968fff910c3b1f61e927 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 0abab6899c04442628673daf3c9c3f2d6028bfa7..2d776cc5c81469c7c8d0fa4d80eeb4eccb30f3d0 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