diff --git a/Network/HTTP2/TLS/IO.hs b/Network/HTTP2/TLS/IO.hs
--- a/Network/HTTP2/TLS/IO.hs
+++ b/Network/HTTP2/TLS/IO.hs
@@ -13,6 +13,7 @@
 import qualified Network.Socket.ByteString as NSB
 import Network.TLS hiding (HostName)
 import System.IO.Error (isEOFError)
+import qualified System.IO.Error as E
 import qualified System.TimeManager as T
 
 import Network.HTTP2.TLS.Server.Settings
@@ -119,7 +120,7 @@
         Backend
             { backendFlush = return ()
             , backendClose =
-                gracefulClose sock 5000 `E.catch` \(E.SomeException _) -> return ()
+                gracefulClose sock 5000 `E.catchIOError` \_ -> return ()
             , backendSend = send'
             , backendRecv = recvN
             }
diff --git a/http2-tls.cabal b/http2-tls.cabal
--- a/http2-tls.cabal
+++ b/http2-tls.cabal
@@ -1,6 +1,6 @@
 cabal-version: >=1.10
 name:          http2-tls
-version:       0.5.3
+version:       0.5.4
 license:       BSD3
 license-file:  LICENSE
 maintainer:    Kazu Yamamoto <kazu@iij.ad.jp>
@@ -47,7 +47,7 @@
         network-run >=0.5 && <0.6,
         recv >=0.1.0 && <0.2,
         time-manager >=0.2 && <0.4,
-        tls >=2.3.0 && <2.4,
+        tls >=2.3.0 && <2.5,
         utf8-string >=1.0 && <1.1
 
 executable h2-client
