diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -4,6 +4,11 @@
 The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
 and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
 
+## 1.1.1 - 2023-03-14
+
+### Fixed
+- Close TBMChan when the session is closed
+
 ## 1.1.0 - 2023-12-29
 
 ### Changed
diff --git a/json-rpc.cabal b/json-rpc.cabal
--- a/json-rpc.cabal
+++ b/json-rpc.cabal
@@ -4,10 +4,10 @@
 --
 -- see: https://github.com/sol/hpack
 --
--- hash: e0d0e4a6940f7d7d8752f6f8bc7749d96342dbc95525d41d2e9d23fddfa5bcf7
+-- hash: 0206b1a45ad29041be2d398ab0fc65ed5547443e7527e91e1af6cde940c89694
 
 name:           json-rpc
-version:        1.1.0
+version:        1.1.1
 synopsis:       Fully-featured JSON-RPC 2.0 library
 description:    Please see the README on GitHub at <https://github.com/jprupp/json-rpc#readme>
 category:       Network
@@ -39,7 +39,7 @@
   ghc-options: -Wall
   build-depends:
       QuickCheck
-    , aeson >=2.2
+    , aeson
     , attoparsec
     , attoparsec-aeson
     , base >=4.6 && <5
@@ -64,7 +64,7 @@
       Paths_json_rpc
   build-depends:
       QuickCheck
-    , aeson >=2.2
+    , aeson
     , attoparsec-aeson
     , base >=4.6 && <5
     , bytestring
@@ -87,7 +87,7 @@
       Paths_json_rpc
   build-depends:
       QuickCheck
-    , aeson >=2.2
+    , aeson
     , attoparsec-aeson
     , base >=4.6 && <5
     , bytestring
@@ -110,7 +110,7 @@
       Paths_json_rpc
   build-depends:
       QuickCheck
-    , aeson >=2.2
+    , aeson
     , attoparsec-aeson
     , base >=4.6 && <5
     , bytestring
@@ -133,7 +133,7 @@
       Paths_json_rpc
   build-depends:
       QuickCheck
-    , aeson >=2.2
+    , aeson
     , attoparsec-aeson
     , base >=4.6 && <5
     , bytestring
@@ -160,7 +160,7 @@
   ghc-options: -threaded -rtsopts -with-rtsopts=-N
   build-depends:
       QuickCheck
-    , aeson >=2.2
+    , aeson
     , attoparsec-aeson
     , base >=4.6 && <5
     , bytestring
diff --git a/src/Network/JSONRPC/Interface.hs b/src/Network/JSONRPC/Interface.hs
--- a/src/Network/JSONRPC/Interface.hs
+++ b/src/Network/JSONRPC/Interface.hs
@@ -326,7 +326,7 @@
     qs <- liftIO . atomically $ initSession ver ignore
     let inSnk  = sinkTBMChan (inCh qs)
         outSrc = sourceTBMChan (outCh qs)
-    withAsync (runConduit $ src .| decodeConduit ver .| inSnk) $ const $
+    withAsync ((runConduit $ src .| decodeConduit ver .| inSnk) >> liftIO (atomically $ closeTBMChan $ inCh qs)) $ const $
         withAsync (runConduit $ outSrc .| encodeConduit .| snk) $ \o ->
             withAsync (runReaderT processIncoming qs) $ const $ do
                 a <- runReaderT f qs
