diff --git a/kmqtt-client/src/commonMain/kotlin/MQTTClient.kt b/kmqtt-client/src/commonMain/kotlin/MQTTClient.kt
index 934ada0966b077685e42472c48e3e2ff590a8317..40cdeeb7ba1112243077b39f42167d03d7e357a3 100644
--- a/kmqtt-client/src/commonMain/kotlin/MQTTClient.kt
+++ b/kmqtt-client/src/commonMain/kotlin/MQTTClient.kt
@@ -329,7 +329,13 @@ public class MQTTClient(
             }
         }
 
-        val data = socket?.read()
+        val data = try {
+            socket?.read()
+        } catch (e: Exception) {
+            close()
+            onDisconnected(null)
+            throw e
+        }
 
         if (data != null) {
             try {
@@ -341,7 +347,6 @@ public class MQTTClient(
                 }
             } catch (e: MQTTException) {
                 lastException = e
-                e.printStackTrace()
                 disconnect(e.reasonCode)
                 close()
                 onDisconnected(null)