Ensure esphome client tasks await cancelation (#82547)

This commit is contained in:
J. Nick Koston
2022-11-23 03:07:05 -06:00
committed by GitHub
parent eaf6d43508
commit 188cdd1bac

View File

@@ -3,6 +3,7 @@ from __future__ import annotations
import asyncio import asyncio
from collections.abc import Callable, Coroutine from collections.abc import Callable, Coroutine
import contextlib
import logging import logging
from typing import Any, TypeVar, cast from typing import Any, TypeVar, cast
import uuid import uuid
@@ -66,6 +67,8 @@ def verify_connected(func: _WrapFuncType) -> _WrapFuncType:
) )
if disconnected_event.is_set(): if disconnected_event.is_set():
task.cancel() task.cancel()
with contextlib.suppress(asyncio.CancelledError):
await task
raise BleakError( raise BleakError(
f"{self._source}: {self._ble_device.name} - {self._ble_device.address}: " # pylint: disable=protected-access f"{self._source}: {self._ble_device.name} - {self._ble_device.address}: " # pylint: disable=protected-access
"Disconnected during operation" "Disconnected during operation"