aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--discord/shard.py14
1 files changed, 9 insertions, 5 deletions
diff --git a/discord/shard.py b/discord/shard.py
index 31777816..0b037398 100644
--- a/discord/shard.py
+++ b/discord/shard.py
@@ -135,12 +135,16 @@ class Shard:
async def reidentify(self, exc):
self._cancel_task()
- log.info('Got a request to %s the websocket at Shard ID %s.', exc.op, self.id)
- coro = DiscordWebSocket.from_client(self._client, resume=exc.resume, shard_id=self.id,
- session=self.ws.session_id, sequence=self.ws.sequence)
self._dispatch('disconnect')
- self.ws = await asyncio.wait_for(coro, timeout=180.0)
- self.launch()
+ log.info('Got a request to %s the websocket at Shard ID %s.', exc.op, self.id)
+ try:
+ coro = DiscordWebSocket.from_client(self._client, resume=exc.resume, shard_id=self.id,
+ session=self.ws.session_id, sequence=self.ws.sequence)
+ self.ws = await asyncio.wait_for(coro, timeout=180.0)
+ except self._handled_exceptions as e:
+ await self._handle_disconnect(e)
+ else:
+ self.launch()
async def reconnect(self):
self._cancel_task()