Skip to content
Prev Previous commit
fix
  • Loading branch information
pavelsavara committed Jan 16, 2024
commit b9659a5d4b27f2f7bd37d00891113cfbe1676358
Original file line number Diff line number Diff line change
Expand Up @@ -542,18 +542,14 @@ private async Task CloseAsyncCore(WebSocketCloseStatus closeStatus, string? stat

private async Task CancellationHelper(Task promise, CancellationToken cancellationToken, WebSocketState previousState, IDisposable? disposable = null)
{
if (cancellationToken.IsCancellationRequested)
{
disposable?.Dispose();
cancellationToken.ThrowIfCancellationRequested();
}
if (promise.IsCompletedSuccessfully)
{
disposable?.Dispose();
return;
}
try
{
cancellationToken.ThrowIfCancellationRequested();
if (promise.IsCompletedSuccessfully)
{
disposable?.Dispose();
return;
}
if (promise.IsCompleted)
{
// don't have to register for cancelation
Expand All @@ -570,7 +566,7 @@ private async Task CancellationHelper(Task promise, CancellationToken cancellati
return;
}
}
catch (JSException ex)
catch (Exception ex)
{
lock (_lockObject)
{
Expand All @@ -580,7 +576,15 @@ private async Task CancellationHelper(Task promise, CancellationToken cancellati
ForceReadCloseStatusLocked();
throw new OperationCanceledException(nameof(WebSocketState.Aborted), ex);
}

if (ex is OperationCanceledException)
{
if(state != WebSocketState.Closed)
{
FastState = WebSocketState.Aborted;
}
_cancelled = true;
throw;
}
if (state != WebSocketState.Closed && cancellationToken.IsCancellationRequested)
{
FastState = WebSocketState.Aborted;
Expand Down