diff --git a/src/Discord.Net/Rpc/DiscordRpcClient.cs b/src/Discord.Net/Rpc/DiscordRpcClient.cs
index a716b12ea..001b94b7f 100644
--- a/src/Discord.Net/Rpc/DiscordRpcClient.cs
+++ b/src/Discord.Net/Rpc/DiscordRpcClient.cs
@@ -113,18 +113,19 @@ namespace Discord.Rpc
}
}
///
- public async Task DisconnectAsync()
+ ///
+ public Task DisconnectAsync() => DisconnectAsync(null, false);
+ private async Task DisconnectAsync(Exception ex = null, bool isReconnecting = false)
{
- await _connectionLock.WaitAsync().ConfigureAwait(false);
- try
+ if (ex == null)
{
- await DisconnectInternalAsync(null, false).ConfigureAwait(false);
+ if (_connectTask?.TrySetCanceled() ?? false) return;
}
- finally { _connectionLock.Release(); }
- }
- private async Task DisconnectAsync(Exception ex, bool isReconnecting)
- {
- if (_connectTask?.TrySetException(ex) ?? false) return;
+ else
+ {
+ if (_connectTask?.TrySetException(ex) ?? false) return;
+ }
+
await _connectionLock.WaitAsync().ConfigureAwait(false);
try
{
diff --git a/src/Discord.Net/WebSocket/DiscordSocketClient.cs b/src/Discord.Net/WebSocket/DiscordSocketClient.cs
index 0dca59214..7a6722f18 100644
--- a/src/Discord.Net/WebSocket/DiscordSocketClient.cs
+++ b/src/Discord.Net/WebSocket/DiscordSocketClient.cs
@@ -181,19 +181,18 @@ namespace Discord.WebSocket
}
}
///
- public async Task DisconnectAsync()
+ public Task DisconnectAsync() => DisconnectAsync(null, false);
+ private async Task DisconnectAsync(Exception ex = null, bool isReconnecting = false)
{
- if (_connectTask?.TrySetCanceled() ?? false) return;
- await _connectionLock.WaitAsync().ConfigureAwait(false);
- try
+ if (ex == null)
{
- await DisconnectInternalAsync(null, false).ConfigureAwait(false);
+ if (_connectTask?.TrySetCanceled() ?? false) return;
}
- finally { _connectionLock.Release(); }
- }
- private async Task DisconnectAsync(Exception ex, bool isReconnecting)
- {
- if (_connectTask?.TrySetException(ex) ?? false) return;
+ else
+ {
+ if (_connectTask?.TrySetException(ex) ?? false) return;
+ }
+
await _connectionLock.WaitAsync().ConfigureAwait(false);
try
{