diff --git a/homeassistant/components/snooz/config_flow.py b/homeassistant/components/snooz/config_flow.py index eb05edcbefaec7afc19623c297aa54a133a3b52f..d2188eeec730413bc80fa940f7cb8f1b558d6524 100644 --- a/homeassistant/components/snooz/config_flow.py +++ b/homeassistant/components/snooz/config_flow.py @@ -134,18 +134,20 @@ class SnoozConfigFlow(ConfigFlow, domain=DOMAIN): self._pairing_task = self.hass.async_create_task( self._async_wait_for_pairing_mode() ) + + if not self._pairing_task.done(): return self.async_show_progress( step_id="wait_for_pairing_mode", progress_action="wait_for_pairing_mode", + progress_task=self._pairing_task, ) try: await self._pairing_task except asyncio.TimeoutError: - self._pairing_task = None return self.async_show_progress_done(next_step_id="pairing_timeout") - - self._pairing_task = None + finally: + self._pairing_task = None return self.async_show_progress_done(next_step_id="pairing_complete") @@ -192,15 +194,10 @@ class SnoozConfigFlow(ConfigFlow, domain=DOMAIN): ) -> bool: return device.supported(service_info) and device.is_pairing - try: - await async_process_advertisements( - self.hass, - is_device_in_pairing_mode, - {"address": self._discovery.info.address}, - BluetoothScanningMode.ACTIVE, - WAIT_FOR_PAIRING_TIMEOUT, - ) - finally: - self.hass.async_create_task( - self.hass.config_entries.flow.async_configure(flow_id=self.flow_id) - ) + await async_process_advertisements( + self.hass, + is_device_in_pairing_mode, + {"address": self._discovery.info.address}, + BluetoothScanningMode.ACTIVE, + WAIT_FOR_PAIRING_TIMEOUT, + )