From f4a8f2a73f033174734ae7aef793c81c6a48ac1f Mon Sep 17 00:00:00 2001 From: Jens Nolte <git@queezle.net> Date: Sun, 2 Jan 2022 00:57:01 +0100 Subject: [PATCH] Export awaitSTM --- src/Quasar/Awaitable.hs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/Quasar/Awaitable.hs b/src/Quasar/Awaitable.hs index 14992a8..ddbd649 100644 --- a/src/Quasar/Awaitable.hs +++ b/src/Quasar/Awaitable.hs @@ -2,6 +2,7 @@ module Quasar.Awaitable ( -- * MonadAwaitable MonadAwait(..), peekAwaitable, + awaitSTM, -- * Awaitable IsAwaitable(toAwaitable), @@ -76,6 +77,8 @@ instance MonadAwait IO where `catch` \BlockedIndefinitelyOnSTM -> throwM BlockedIndefinitelyOnAwait +-- | `awaitSTM` exists as an explicit alternative to an `Awaitable STM`-instance, to prevent code which creates- and +-- then awaits resources without knowing it's running in STM (which would block indefinitely when run in STM). awaitSTM :: Awaitable a -> STM a awaitSTM (toAwaitable -> Awaitable x) = x `catch` \BlockedIndefinitelyOnSTM -> throwM BlockedIndefinitelyOnAwait -- GitLab