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 Franck Nijhof
parent 6c88574dee
commit c91ef833f4
No known key found for this signature in database
GPG Key ID: D62583BA8AB11CA3

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
@ -65,6 +66,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"