diff --git a/telethon/extensions/tcpclient.py b/telethon/extensions/tcpclient.py index f24dec40..1501d295 100644 --- a/telethon/extensions/tcpclient.py +++ b/telethon/extensions/tcpclient.py @@ -151,7 +151,14 @@ class TcpClient: loop=self._loop ) for r in running: - r.cancel() + if not r.cancelled(): + if r.done(): + # Retrieve exception to avoid "not retrieved" errors + r.exception() + + # Cancel the future despite its state + r.cancel() + if not self.is_connected: raise self.SocketClosed() if not done: diff --git a/telethon/network/mtprotosender.py b/telethon/network/mtprotosender.py index cf19ecb4..315ecf12 100644 --- a/telethon/network/mtprotosender.py +++ b/telethon/network/mtprotosender.py @@ -167,7 +167,7 @@ class MTProtoSender: self._recv_loop_handle.cancel() __log__.info('Disconnection from {} complete!'.format(self._ip)) - if self._disconnected: + if self._disconnected and not self._disconnected.done(): if error: self._disconnected.set_exception(error) else: