diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,8 @@
+0.13.2
+-----------------------------------------------------------------------------
+- Retry on `IOException`.
+- Update dependencies.
+
 0.13.1
 -----------------------------------------------------------------------------
 - Support `monad-control` 1.*
diff --git a/cql-io.cabal b/cql-io.cabal
--- a/cql-io.cabal
+++ b/cql-io.cabal
@@ -1,5 +1,5 @@
 name:                 cql-io
-version:              0.13.1
+version:              0.13.2
 synopsis:             Cassandra CQL client.
 stability:            experimental
 license:              OtherLicense
@@ -81,7 +81,7 @@
         , mtl                >= 2.1     && < 2.5
         , mwc-random         >= 0.13    && < 0.14
         , network            >= 2.4     && < 3.0
-        , semigroups         >= 0.15    && < 0.16
+        , semigroups         >= 0.15    && < 0.20
         , stm                >= 2.4     && < 3.0
         , text               >= 0.11    && < 2.0
         , tinylog            >= 0.8     && < 0.15
diff --git a/src/Database/CQL/IO/Client.hs b/src/Database/CQL/IO/Client.hs
--- a/src/Database/CQL/IO/Client.hs
+++ b/src/Database/CQL/IO/Client.hs
@@ -64,6 +64,7 @@
 import Database.CQL.Protocol hiding (Map)
 import Network.Socket (SockAddr (..), PortNumber)
 import System.Logger.Class hiding (Settings, new, settings, create)
+import Prelude
 
 import qualified Control.Monad.Reader       as Reader
 import qualified Control.Monad.State.Strict as S
@@ -232,6 +233,7 @@
             ServerError  {} -> return True
             _               -> return False
         , const $ Handler $ \(_ :: ConnectionError) -> return True
+        , const $ Handler $ \(_ :: IOException)     -> return True
         ]
 
 getResponse :: (Tuple a, Tuple b) => Request k a b -> ClientState -> Word -> Client (Response k a b)
diff --git a/src/Database/CQL/IO/Cluster/Policies.hs b/src/Database/CQL/IO/Cluster/Policies.hs
--- a/src/Database/CQL/IO/Cluster/Policies.hs
+++ b/src/Database/CQL/IO/Cluster/Policies.hs
@@ -19,6 +19,7 @@
 import Database.CQL.IO.Cluster.Host
 import Database.CQL.IO.Types (InetAddr)
 import System.Random.MWC
+import Prelude
 
 import qualified Data.Map.Strict as Map
 
diff --git a/src/Database/CQL/IO/Connection.hs b/src/Database/CQL/IO/Connection.hs
--- a/src/Database/CQL/IO/Connection.hs
+++ b/src/Database/CQL/IO/Connection.hs
@@ -4,7 +4,6 @@
 
 {-# LANGUAGE BangPatterns        #-}
 {-# LANGUAGE OverloadedStrings   #-}
-{-# LANGUAGE RecordWildCards     #-}
 {-# LANGUAGE TemplateHaskell     #-}
 {-# LANGUAGE ScopedTypeVariables #-}
 
@@ -66,6 +65,7 @@
 import System.IO (nativeNewline, Newline (..))
 import System.Logger hiding (Settings, close, defSettings, settings)
 import System.Timeout
+import Prelude
 
 import qualified Data.ByteString            as B
 import qualified Data.ByteString.Lazy       as L
@@ -152,9 +152,9 @@
 mkSock :: InetAddr -> IO Socket
 mkSock (InetAddr a) = socket (familyOf a) Stream defaultProtocol
   where
-    familyOf (SockAddrInet  {..}) = AF_INET
-    familyOf (SockAddrInet6 {..}) = AF_INET6
-    familyOf (SockAddrUnix  {..}) = AF_UNIX
+    familyOf (SockAddrInet  _ _)     = AF_INET
+    familyOf (SockAddrInet6 _ _ _ _) = AF_INET6
+    familyOf (SockAddrUnix  _)       = AF_UNIX
 
 ping :: MonadIO m => InetAddr -> m Bool
 ping a = liftIO $ bracket (mkSock a) S.close $ \s ->
diff --git a/src/Database/CQL/IO/Jobs.hs b/src/Database/CQL/IO/Jobs.hs
--- a/src/Database/CQL/IO/Jobs.hs
+++ b/src/Database/CQL/IO/Jobs.hs
@@ -19,6 +19,7 @@
 import Database.CQL.IO.Types
 import Data.Map.Strict (Map)
 import Data.Unique
+import Prelude
 
 import qualified Data.Map.Strict as Map
 
diff --git a/src/Database/CQL/IO/Settings.hs b/src/Database/CQL/IO/Settings.hs
--- a/src/Database/CQL/IO/Settings.hs
+++ b/src/Database/CQL/IO/Settings.hs
@@ -20,6 +20,7 @@
 import Database.CQL.IO.Pool as P
 import Database.CQL.IO.Types (Milliseconds (..))
 import Network.Socket (PortNumber (..))
+import Prelude
 
 data RetrySettings = RetrySettings
     { _retryPolicy        :: !RetryPolicy
diff --git a/src/Database/CQL/IO/Signal.hs b/src/Database/CQL/IO/Signal.hs
--- a/src/Database/CQL/IO/Signal.hs
+++ b/src/Database/CQL/IO/Signal.hs
@@ -14,6 +14,7 @@
 import Control.Applicative
 import Control.Concurrent (forkIO)
 import Data.IORef
+import Prelude
 
 newtype Signal a = Sig (IORef [a -> IO ()])
 
diff --git a/src/Database/CQL/IO/Sync.hs b/src/Database/CQL/IO/Sync.hs
--- a/src/Database/CQL/IO/Sync.hs
+++ b/src/Database/CQL/IO/Sync.hs
@@ -14,6 +14,7 @@
 import Control.Applicative
 import Control.Concurrent.STM
 import Control.Exception (SomeException, Exception, toException)
+import Prelude
 
 data State a
     = Empty
diff --git a/src/Database/CQL/IO/Tickets.hs b/src/Database/CQL/IO/Tickets.hs
--- a/src/Database/CQL/IO/Tickets.hs
+++ b/src/Database/CQL/IO/Tickets.hs
@@ -16,6 +16,7 @@
 import Control.Concurrent.STM
 import Control.Exception (SomeException, Exception, toException)
 import Data.Set (Set)
+import Prelude
 
 import qualified Data.Set as Set
 
diff --git a/src/Database/CQL/IO/Timeouts.hs b/src/Database/CQL/IO/Timeouts.hs
--- a/src/Database/CQL/IO/Timeouts.hs
+++ b/src/Database/CQL/IO/Timeouts.hs
@@ -19,6 +19,7 @@
 import Control.Reaper
 import Control.Monad
 import Database.CQL.IO.Types (Milliseconds (..), ignore)
+import Prelude
 
 data TimeoutManager = TimeoutManager
     { roundtrip :: !Int
