diff --git a/Network/TLS/Util.hs b/Network/TLS/Util.hs
--- a/Network/TLS/Util.hs
+++ b/Network/TLS/Util.hs
@@ -16,8 +16,8 @@
 import Network.TLS.Struct (Bytes)
 import qualified Data.ByteString as B
 
-import Control.Exception (fromException)
-import qualified Control.Exception as E
+import Control.Exception (SomeException)
+import Control.Concurrent.Async
 
 sub :: Bytes -> Int -> Int -> Maybe Bytes
 sub b offset len
@@ -77,9 +77,5 @@
     Left l  -> Left l
     Right r -> Right (f r)
 
-catchException :: IO a -> (E.SomeException -> IO a) -> IO a
-catchException f handler = E.catchJust filterExn f handler
-  where filterExn :: E.SomeException -> Maybe E.SomeException
-        filterExn e = case fromException e of
-                            Just (_ :: E.AsyncException) -> Nothing
-                            Nothing                      -> Just e
+catchException :: IO a -> (SomeException -> IO a) -> IO a
+catchException action handler = withAsync action waitCatch >>= either handler return
diff --git a/tls.cabal b/tls.cabal
--- a/tls.cabal
+++ b/tls.cabal
@@ -1,5 +1,5 @@
 Name:                tls
-Version:             1.2.11
+Version:             1.2.12
 Description:
    Native Haskell TLS and SSL protocol implementation for server and client.
    .
@@ -56,6 +56,7 @@
                    , x509 >= 1.5.0 && < 1.6.0
                    , x509-store >= 1.5.0
                    , x509-validation >= 1.5.1 && < 1.6.0
+                   , async
   Exposed-modules:   Network.TLS
                      Network.TLS.Cipher
                      Network.TLS.Compression
