From 93ea492ee0055a956b83f27deb5e535413396422 Mon Sep 17 00:00:00 2001
From: Jens Nolte <git@queezle.net>
Date: Sun, 29 Aug 2021 20:31:55 +0200
Subject: [PATCH] Add stronger constraints for MonadAsync/MonadAwait

Co-authored-by: Jan Beinke <git@janbeinke.com>
---
 src/Quasar/Async.hs      | 2 +-
 src/Quasar/Awaitable.hs  | 2 +-
 src/Quasar/Disposable.hs | 4 ++--
 3 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/src/Quasar/Async.hs b/src/Quasar/Async.hs
index b3efc4d..3aa9c21 100644
--- a/src/Quasar/Async.hs
+++ b/src/Quasar/Async.hs
@@ -25,7 +25,7 @@ import Quasar.Disposable
 import Quasar.Prelude
 
 
-class (MonadAwait m, MonadResourceManager m, MonadCatch m) => MonadAsync m where
+class (MonadAwait m, MonadResourceManager m, MonadMask m) => MonadAsync m where
   -- | TODO
   async :: m r -> m (Task r)
   async action = asyncWithUnmask ($ action)
diff --git a/src/Quasar/Awaitable.hs b/src/Quasar/Awaitable.hs
index 931a39b..930fd6f 100644
--- a/src/Quasar/Awaitable.hs
+++ b/src/Quasar/Awaitable.hs
@@ -72,7 +72,7 @@ class IsAwaitable r a | a -> r where
 
 
 
-class Monad m => MonadAwait m where
+class (MonadCatch m, MonadPlus m) => MonadAwait m where
   await :: IsAwaitable r a => a -> m r
 
 instance MonadAwait IO where
diff --git a/src/Quasar/Disposable.hs b/src/Quasar/Disposable.hs
index 76e0f28..238c90e 100644
--- a/src/Quasar/Disposable.hs
+++ b/src/Quasar/Disposable.hs
@@ -210,10 +210,10 @@ class HasResourceManager a where
 instance HasResourceManager ResourceManager where
   getResourceManager = id
 
-class MonadIO m => MonadResourceManager m where
+class (MonadMask m, MonadIO m) => MonadResourceManager m where
   askResourceManager :: m ResourceManager
 
-instance MonadIO m => MonadResourceManager (ReaderT ResourceManager m) where
+instance (MonadMask m, MonadIO m) => MonadResourceManager (ReaderT ResourceManager m) where
   askResourceManager = ask
 
 
-- 
GitLab