diff --git a/aiormq/base.py b/aiormq/base.py index b8bf9bd..1de1b1d 100644 --- a/aiormq/base.py +++ b/aiormq/base.py @@ -30,16 +30,18 @@ def __init__(self, loop: asyncio.AbstractEventLoop): def __on_task_done( self, future: Union[asyncio.Future, TaskWrapper], ) -> Callable[..., Any]: - def remover(*_: Any) -> None: - nonlocal future - if future in self.futures: - self.futures.remove(future) + if future in self.futures: + self.futures.remove(future) - return remover + if not isinstance(future, TaskWrapper): + return + + with suppress(asyncio.CancelledError): + future.result() def add(self, future: Union[asyncio.Future, TaskWrapper]) -> None: self.futures.add(future) - future.add_done_callback(self.__on_task_done(future)) + future.add_done_callback(self.__on_task_done) if self.parent: self.parent.add(future)