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
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

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"