From 4d1f1ded5c501c163bd09502bc22535866911127 Mon Sep 17 00:00:00 2001
From: Jens Nolte <git@queezle.net>
Date: Wed, 25 Aug 2021 02:07:08 +0200
Subject: [PATCH] Add tryAwaitIO

---
 src/Quasar/Awaitable.hs | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/src/Quasar/Awaitable.hs b/src/Quasar/Awaitable.hs
index 499a754..98f50d0 100644
--- a/src/Quasar/Awaitable.hs
+++ b/src/Quasar/Awaitable.hs
@@ -3,6 +3,7 @@ module Quasar.Awaitable (
   IsAwaitable(..),
   MonadQuerySTM(querySTM),
   awaitIO,
+  tryAwaitIO,
   peekAwaitable,
   Awaitable,
   successfulAwaitable,
@@ -57,7 +58,10 @@ class IsAwaitable r a | a -> r where
 
 
 awaitIO :: (IsAwaitable r a, MonadIO m) => a -> m r
-awaitIO awaitable = liftIO $ either throwIO pure =<< runQueryT (atomically . (maybe retry pure =<<)) (runAwaitable awaitable)
+awaitIO awaitable = liftIO $ either throwIO pure =<< tryAwaitIO awaitable
+
+tryAwaitIO :: (IsAwaitable r a, MonadIO m) => a -> m (Either SomeException r)
+tryAwaitIO awaitable = liftIO $ runQueryT (atomically . (maybe retry pure =<<)) (runAwaitable awaitable)
 
 peekAwaitable :: (IsAwaitable r a, MonadIO m) => a -> m (Maybe (Either SomeException r))
 peekAwaitable awaitable = liftIO $ runMaybeT $ runQueryT (MaybeT . atomically) (runAwaitable awaitable)
-- 
GitLab