diff --git a/src/libraries/System.Net.Quic/src/System/Net/Quic/Implementations/MsQuic/MsQuicStream.cs b/src/libraries/System.Net.Quic/src/System/Net/Quic/Implementations/MsQuic/MsQuicStream.cs index 0c29a9285d6752..29a354537e4090 100644 --- a/src/libraries/System.Net.Quic/src/System/Net/Quic/Implementations/MsQuic/MsQuicStream.cs +++ b/src/libraries/System.Net.Quic/src/System/Net/Quic/Implementations/MsQuic/MsQuicStream.cs @@ -647,7 +647,9 @@ internal override int Read(Span buffer) byte[] rentedBuffer = ArrayPool.Shared.Rent(buffer.Length); try { - int readLength = ReadAsync(new Memory(rentedBuffer, 0, buffer.Length)).AsTask().GetAwaiter().GetResult(); + Task t = ReadAsync(new Memory(rentedBuffer, 0, buffer.Length)).AsTask(); + ((IAsyncResult)t).AsyncWaitHandle.WaitOne(); + int readLength = t.GetAwaiter().GetResult(); rentedBuffer.AsSpan(0, readLength).CopyTo(buffer); return readLength; } @@ -662,7 +664,9 @@ internal override void Write(ReadOnlySpan buffer) ThrowIfDisposed(); // TODO: optimize this. - WriteAsync(buffer.ToArray()).AsTask().GetAwaiter().GetResult(); + Task t = WriteAsync(buffer.ToArray()).AsTask(); + ((IAsyncResult)t).AsyncWaitHandle.WaitOne(); + t.GetAwaiter().GetResult(); } // MsQuic doesn't support explicit flushing