diff --git a/mautrix_facebook/user.py b/mautrix_facebook/user.py
index 64412502688353ff4209d53636482bf502d21cba..e2870b5877101b7299a89118e7b581ff7a95dc6f 100644
--- a/mautrix_facebook/user.py
+++ b/mautrix_facebook/user.py
@@ -257,18 +257,25 @@ class User(BaseUser):
         event_id = None
         self._is_refreshing = True
         if self.listener:
+            self.log.debug("Disconnecting MQTT connection for session refresh...")
             if self.temp_disconnect_notices or force_notice:
                 event_id = await self.send_bridge_notice("Disconnecting Messenger MQTT connection "
                                                          "for session refresh...")
             self.listener.disconnect()
             if self.listen_task:
-                await self.listen_task
+                try:
+                    await asyncio.wait_for(self.listen_task, timeout=3)
+                except asyncio.TimeoutError:
+                    self.log.debug("Waiting for MQTT connection timed out")
+                else:
+                    self.log.debug("MQTT connection disconnected")
             self.listener = None
             if self.client:
                 self.client.sequence_id_callback = None
         if self.temp_disconnect_notices or force_notice:
             event_id = await self.send_bridge_notice("Refreshing session...", edit=event_id)
         try:
+            self.log.debug("Re-loading session for refresh")
             ok = await self.load_session(_override=True, _raise_errors=True)
         except fbchat.FacebookError as e:
             await self.send_bridge_notice("Failed to refresh Messenger session: "