diff --git a/src/Quasar/Async.hs b/src/Quasar/Async.hs
index a901fd71ea58d554aefd8e01282e8838a77b6fa9..cb143e47e7c9f4011493e68a7de4743fd73837e4 100644
--- a/src/Quasar/Async.hs
+++ b/src/Quasar/Async.hs
@@ -190,7 +190,7 @@ unlimitedAsyncManagerConfiguration = AsyncManagerConfiguraiton {
 }
 
 withAsyncManager :: AsyncManagerConfiguraiton -> AsyncIO r -> IO r
-withAsyncManager configuration = bracket (newAsyncManager configuration) disposeAsyncManager . flip runOnAsyncManager
+withAsyncManager configuration = bracket (newAsyncManager configuration) (awaitIO <=< dispose) . flip runOnAsyncManager
 
 runOnAsyncManager :: AsyncManager -> AsyncIO r -> IO r
 runOnAsyncManager asyncManager (AsyncIO action) = runReaderT action asyncManager
@@ -210,8 +210,3 @@ newAsyncManager configuration = do
     configuration,
     threads
   }
-
-disposeAsyncManager :: AsyncManager -> IO ()
--- TODO resource management
-disposeAsyncManager = const (pure ())
-