diff --git a/Control/Concurrent/Async.hs b/Control/Concurrent/Async.hs
--- a/Control/Concurrent/Async.hs
+++ b/Control/Concurrent/Async.hs
@@ -92,7 +92,7 @@
     -- ** Spawning with automatic 'cancel'ation
     withAsync, withAsyncBound, withAsyncOn, withAsyncWithUnmask, withAsyncOnWithUnmask,
 
-    -- ** Quering 'Async's
+    -- ** Querying 'Async's
     wait, poll, waitCatch, cancel, cancelWith,
     asyncThreadId,
 
@@ -570,6 +570,11 @@
   empty = Concurrently $ forever (threadDelay maxBound)
   Concurrently as <|> Concurrently bs =
     Concurrently $ either id id <$> race as bs
+
+instance Monad Concurrently where
+  return = pure
+  Concurrently a >>= f =
+    Concurrently $ a >>= runConcurrently . f
 
 -- ----------------------------------------------------------------------------
 
diff --git a/async.cabal b/async.cabal
--- a/async.cabal
+++ b/async.cabal
@@ -22,6 +22,11 @@
    threads that are automatically killed when
    their parent dies (see 'withAsync').
  .
+ Changes in 2.0.2:
+ .
+ * Add a Monad instance for Concurrently
+ * Bump base dependency to allow 4.9
+ .
  Changes in 2.0.1.6:
  .
  * Add workaround to waitCatch for #14
@@ -56,7 +61,7 @@
  .
  * Added @Concurrently@ (with @Applicative@ and @Alternative@ instances)
 
-version:             2.0.1.6
+version:             2.0.2
 license:             BSD3
 license-file:        LICENSE
 author:              Simon Marlow
@@ -78,13 +83,13 @@
 
 library
     exposed-modules:     Control.Concurrent.Async
-    build-depends:       base >= 4.3 && < 4.8, stm >= 2.2 && < 2.5
+    build-depends:       base >= 4.3 && < 4.9, stm >= 2.2 && < 2.5
 
 test-suite test-async
     type:       exitcode-stdio-1.0
     hs-source-dirs: test
     main-is:    test-async.hs
-    build-depends: base >= 4.3 && < 4.8,
+    build-depends: base >= 4.3 && < 4.9,
                    async,
                    test-framework,
                    test-framework-hunit,
