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;
}