diff --git a/CHANGELOG b/CHANGELOG
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,5 +1,9 @@
 # Changelog for Hedis
 
+## 0.14.3
+
+* PR #171. Support GHC 9
+
 ## 0.14.2
 
 * PR #163. support for redis 6.0 COMMAND format
diff --git a/hedis.cabal b/hedis.cabal
--- a/hedis.cabal
+++ b/hedis.cabal
@@ -1,5 +1,5 @@
 name:               hedis
-version:            0.14.2
+version:            0.14.3
 synopsis:
     Client library for the Redis datastore: supports full command set,
     pipelining.
diff --git a/src/Database/Redis/PubSub.hs b/src/Database/Redis/PubSub.hs
--- a/src/Database/Redis/PubSub.hs
+++ b/src/Database/Redis/PubSub.hs
@@ -545,11 +545,13 @@
 -- main = do
 --   conn <- connect defaultConnectInfo
 --   pubSubCtrl <- newPubSubController [("mychannel", myhandler)] []
---   forkIO $ forever $
+--   concurrently ( forever $
 --       pubSubForever conn pubSubCtrl onInitialComplete
 --         \`catch\` (\\(e :: SomeException) -> do
 --           putStrLn $ "Got error: " ++ show e
 --           threadDelay $ 50*1000) -- TODO: use exponential backoff
+--        ) $ restOfYourProgram
+--
 --
 --   {- elsewhere in your program, use pubSubCtrl to change subscriptions -}
 -- @
diff --git a/src/Database/Redis/Transactions.hs b/src/Database/Redis/Transactions.hs
--- a/src/Database/Redis/Transactions.hs
+++ b/src/Database/Redis/Transactions.hs
@@ -41,7 +41,7 @@
         -- future index in EXEC result list
         i <- get
         put (i+1)
-        return $ Queued (decode . (!i))
+        return $ Queued (decode . (! i))
 
 -- |A 'Queued' value represents the result of a command inside a transaction. It
 --  is a proxy object for the /actual/ result, which will only be available
