diff --git a/pytec/tec_qt.py b/pytec/tec_qt.py
index 41f183f..54d0cd0 100755
--- a/pytec/tec_qt.py
+++ b/pytec/tec_qt.py
@@ -252,20 +252,23 @@ class MainWindow(QtWidgets.QMainWindow):
             self.conn_menu.host_set_line.setEnabled(False)
             self.conn_menu.port_set_spin.setEnabled(False)
 
-            try:
-                self._connecting_task = asyncio.create_task(
-                    asyncio.wait_for(self.thermostat.start_session(host=host, port=port), timeout=5)
+            self._connecting_task = asyncio.create_task(
+                asyncio.wait_for(
+                    self.thermostat.start_session(host=host, port=port), timeout=5
                 )
+            )
+            try:
                 await self._connecting_task
             except (OSError, asyncio.TimeoutError):
                 await self.bail()
                 return
             except asyncio.CancelledError:
                 return
+            else:
+                await self._on_connection_changed(True)
             finally:
                 self._connecting_task = None
 
-            await self._on_connection_changed(True)
         else:
             if self._connecting_task is not None:
                 self._connecting_task.cancel()