diff --git a/src/Discord.Net/Rpc/DiscordRpcClient.cs b/src/Discord.Net/Rpc/DiscordRpcClient.cs index 001b94b7f..3a45d85ac 100644 --- a/src/Discord.Net/Rpc/DiscordRpcClient.cs +++ b/src/Discord.Net/Rpc/DiscordRpcClient.cs @@ -113,23 +113,13 @@ namespace Discord.Rpc } } /// - /// - public Task DisconnectAsync() => DisconnectAsync(null, false); - private async Task DisconnectAsync(Exception ex = null, bool isReconnecting = false) + public async Task DisconnectAsync() { - if (ex == null) - { - if (_connectTask?.TrySetCanceled() ?? false) return; - } - else - { - if (_connectTask?.TrySetException(ex) ?? false) return; - } - + if (_connectTask?.TrySetCanceled() ?? false) return; await _connectionLock.WaitAsync().ConfigureAwait(false); try { - await DisconnectInternalAsync(ex, isReconnecting).ConfigureAwait(false); + await DisconnectInternalAsync(null, false).ConfigureAwait(false); } finally { _connectionLock.Release(); } } @@ -174,7 +164,14 @@ namespace Discord.Rpc } private async Task ReconnectInternalAsync(Exception ex, CancellationToken cancelToken) { - await DisconnectAsync(null, true).ConfigureAwait(false); + if (ex == null) + { + if (_connectTask?.TrySetCanceled() ?? false) return; + } + else + { + if (_connectTask?.TrySetException(ex) ?? false) return; + } try { diff --git a/src/Discord.Net/WebSocket/DiscordSocketClient.cs b/src/Discord.Net/WebSocket/DiscordSocketClient.cs index 7a6722f18..171b79406 100644 --- a/src/Discord.Net/WebSocket/DiscordSocketClient.cs +++ b/src/Discord.Net/WebSocket/DiscordSocketClient.cs @@ -181,22 +181,13 @@ namespace Discord.WebSocket } } /// - public Task DisconnectAsync() => DisconnectAsync(null, false); - private async Task DisconnectAsync(Exception ex = null, bool isReconnecting = false) + public async Task DisconnectAsync() { - if (ex == null) - { - if (_connectTask?.TrySetCanceled() ?? false) return; - } - else - { - if (_connectTask?.TrySetException(ex) ?? false) return; - } - + if (_connectTask?.TrySetCanceled() ?? false) return; await _connectionLock.WaitAsync().ConfigureAwait(false); try { - await DisconnectInternalAsync(ex, isReconnecting).ConfigureAwait(false); + await DisconnectInternalAsync(null, false).ConfigureAwait(false); } finally { _connectionLock.Release(); } } @@ -269,7 +260,14 @@ namespace Discord.WebSocket } private async Task ReconnectInternalAsync(Exception ex, CancellationToken cancelToken) { - await DisconnectAsync(null, true).ConfigureAwait(false); + if (ex == null) + { + if (_connectTask?.TrySetCanceled() ?? false) return; + } + else + { + if (_connectTask?.TrySetException(ex) ?? false) return; + } try { @@ -579,7 +577,7 @@ namespace Discord.WebSocket } catch (Exception ex) { - await DisconnectAsync(new Exception("Processing READY failed", ex), false); + _connectTask.TrySetException(new Exception("Processing READY failed", ex)); return; }