diff --git a/src/Custom/Realtime/Internal/AsyncWebsocketMessageEnumerator.cs b/src/Custom/Realtime/Internal/AsyncWebsocketMessageEnumerator.cs index 4e581dc31..d5c8d8ea8 100644 --- a/src/Custom/Realtime/Internal/AsyncWebsocketMessageEnumerator.cs +++ b/src/Custom/Realtime/Internal/AsyncWebsocketMessageEnumerator.cs @@ -13,7 +13,7 @@ internal partial class AsyncWebsocketMessageResultEnumerator : IAsyncEnumerator< public ClientResult Current { get; private set; } private readonly CancellationToken _cancellationToken; private readonly WebSocket _webSocket; - private readonly byte[] _receiveBuffer; + private byte[] _receiveBuffer; public AsyncWebsocketMessageResultEnumerator(WebSocket webSocket, CancellationToken cancellationToken) { @@ -26,12 +26,11 @@ public AsyncWebsocketMessageResultEnumerator(WebSocket webSocket, CancellationTo public ValueTask DisposeAsync() { - _webSocket?.Dispose(); - if (_receiveBuffer is not null) + if (Interlocked.Exchange(ref _receiveBuffer, null) is byte[] toReturn) { - ArrayPool.Shared.Return(_receiveBuffer); + ArrayPool.Shared.Return(toReturn); } - return new ValueTask(Task.CompletedTask); + return default; } public async ValueTask MoveNextAsync()