From 320c54bfab879e0643d8bb2a9d2a8fe89fd0e0f2 Mon Sep 17 00:00:00 2001
From: Jens Nolte <git@queezle.net>
Date: Sun, 29 Aug 2021 01:34:45 +0200
Subject: [PATCH] Add MonadAwait instance to Awaitable

---
 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 15399c4..709462d 100644
--- a/src/Quasar/Awaitable.hs
+++ b/src/Quasar/Awaitable.hs
@@ -103,11 +103,14 @@ instance IsAwaitable r (Awaitable r) where
   cacheAwaitable (Awaitable x) = cacheAwaitable x
   toAwaitable = id
 
+instance MonadAwait Awaitable where
+  await = toAwaitable
+
 instance Functor Awaitable where
   fmap fn (Awaitable x) = fnAwaitable $ fn <$> runAwaitable x
 
 instance Applicative Awaitable where
-  pure value = fnAwaitable $ pure value
+  pure = successfulAwaitable
   liftA2 fn (Awaitable fx) (Awaitable fy) = fnAwaitable $ liftA2 fn (runAwaitable fx) (runAwaitable fy)
 
 instance Monad Awaitable where
@@ -158,6 +161,7 @@ instance IsAwaitable r (CompletedAwaitable r) where
 completedAwaitable :: Either SomeException r -> Awaitable r
 completedAwaitable result = toAwaitable $ CompletedAwaitable result
 
+-- | Alias for `pure`.
 successfulAwaitable :: r -> Awaitable r
 successfulAwaitable = completedAwaitable . Right
 
-- 
GitLab