diff --git a/src/Discord.Net.WebSocket/DiscordSocketApiClient.cs b/src/Discord.Net.WebSocket/DiscordSocketApiClient.cs index 75960b17..ab12ab7b 100644 --- a/src/Discord.Net.WebSocket/DiscordSocketApiClient.cs +++ b/src/Discord.Net.WebSocket/DiscordSocketApiClient.cs @@ -279,15 +279,17 @@ namespace Discord.API return; ConnectionState = ConnectionState.Disconnecting; - try - { _connectCancelToken?.Cancel(false); } - catch { } - if (ex is GatewayReconnectException) await WebSocketClient.DisconnectAsync(4000).ConfigureAwait(false); else await WebSocketClient.DisconnectAsync().ConfigureAwait(false); + try + { + _connectCancelToken?.Cancel(false); + } + catch { } + ConnectionState = ConnectionState.Disconnected; } diff --git a/src/Discord.Net.WebSocket/Net/DefaultWebSocketClient.cs b/src/Discord.Net.WebSocket/Net/DefaultWebSocketClient.cs index c4d354cb..bcdbf903 100644 --- a/src/Discord.Net.WebSocket/Net/DefaultWebSocketClient.cs +++ b/src/Discord.Net.WebSocket/Net/DefaultWebSocketClient.cs @@ -110,9 +110,6 @@ namespace Discord.Net.WebSockets { _isDisconnecting = true; - try - { _disconnectTokenSource.Cancel(false); } - catch { } if (_client != null) { @@ -120,11 +117,22 @@ namespace Discord.Net.WebSockets { var status = (WebSocketCloseStatus)closeCode; try - { await _client.CloseOutputAsync(status, "", new CancellationToken()); } + { + await _client.CloseOutputAsync(status, "", new CancellationToken()); + } catch { } } + try - { _client.Dispose(); } + { + _client.Dispose(); + } + catch { } + + try + { + _disconnectTokenSource.Cancel(false); + } catch { } _client = null;