From b7445582e31046e298517343f88d94c14ceb64a2 Mon Sep 17 00:00:00 2001
From: Jens Nolte <git@queezle.net>
Date: Sun, 7 Nov 2021 01:29:40 +0100
Subject: [PATCH] Add tryReadAsyncVarSTM

Co-authored-by: Jan Beinke <git@janbeinke.com>
---
 src/Quasar/Awaitable.hs | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/src/Quasar/Awaitable.hs b/src/Quasar/Awaitable.hs
index cfc58f6..424f67f 100644
--- a/src/Quasar/Awaitable.hs
+++ b/src/Quasar/Awaitable.hs
@@ -44,6 +44,7 @@ module Quasar.Awaitable (
   failAsyncVarSTM_,
   putAsyncVarEitherSTM_,
   readAsyncVarSTM,
+  tryReadAsyncVarSTM,
 ) where
 
 import Control.Applicative (empty)
@@ -365,6 +366,9 @@ putAsyncVarEitherSTM (AsyncVar var) = tryPutTMVar var
 readAsyncVarSTM :: AsyncVar a -> STM a
 readAsyncVarSTM (AsyncVar var) = either throwM pure =<< readTMVar var
 
+tryReadAsyncVarSTM :: forall a. AsyncVar a -> STM (Maybe a)
+tryReadAsyncVarSTM (AsyncVar var) = mapM (either throwM pure) =<< tryReadTMVar var
+
 
 putAsyncVar :: MonadIO m => AsyncVar a -> a -> m Bool
 putAsyncVar var = putAsyncVarEither var . Right
-- 
GitLab