diff --git a/Changelog.md b/Changelog.md
--- a/Changelog.md
+++ b/Changelog.md
@@ -1,5 +1,13 @@
 # Changelog for net-mqtt
 
+## 0.6.1.1
+
+Add connection checks to publish phases.
+
+Having a broker/connection die in the middle of a publish in QoS > 0
+could result in a thread waiting indefinitely for the response that
+would not ever arrive.
+
 ## 0.6.1.0
 
 Users can now specify TLSSettings for mqtts:// and wss:// connections.
diff --git a/net-mqtt.cabal b/net-mqtt.cabal
--- a/net-mqtt.cabal
+++ b/net-mqtt.cabal
@@ -4,10 +4,10 @@
 --
 -- see: https://github.com/sol/hpack
 --
--- hash: 37d707924711ee323b90898ae6a53dfe919a58be4f6484ee60ce0028ce6b2bb2
+-- hash: 6c69102312ff4cecc87356752a2c3125e4e9aa010ece324b5d191f234c89616c
 
 name:           net-mqtt
-version:        0.6.1.0
+version:        0.6.1.1
 synopsis:       An MQTT Protocol Implementation.
 description:    Please see the README on GitHub at <https://github.com/dustin/mqtt-hs#readme>
 category:       Network
diff --git a/src/Network/MQTT/Client.hs b/src/Network/MQTT/Client.hs
--- a/src/Network/MQTT/Client.hs
+++ b/src/Network/MQTT/Client.hs
@@ -588,14 +588,14 @@
       satisfyQoS p ch pid
         | q == QoS0 = pure ()
         | q == QoS1 = void $ do
-            (PubACKPkt (PubACK _ st pprops)) <- atomically $ readTChan ch
+            (PubACKPkt (PubACK _ st pprops)) <- atomically $ checkConnected c >> readTChan ch
             when (st /= 0) $ mqttFail ("qos 1 publish error: " <> show st <> " " <> show pprops)
         | q == QoS2 = waitRec
         | otherwise = error "invalid QoS"
 
         where
           waitRec = do
-            rpkt <- atomically $ readTChan ch
+            rpkt <- atomically $ checkConnected c >> readTChan ch
             case rpkt of
               PubRECPkt (PubREC _ st recprops) -> do
                 when (st /= 0) $ mqttFail ("qos 2 REC publish error: " <> show st <> " " <> show recprops)
