internal ValueTask SendAsyncForNetworkStream(ReadOnlyMemory <byte> buffer, SocketFlags socketFlags, CancellationToken cancellationToken) { if (cancellationToken.IsCancellationRequested) { return(ValueTask.FromCanceled(cancellationToken)); } AwaitableSocketAsyncEventArgs saea = Interlocked.Exchange(ref _singleBufferSendEventArgs, null) ?? new AwaitableSocketAsyncEventArgs(this, isReceiveForCaching: false); Debug.Assert(saea.BufferList == null); saea.SetBuffer(MemoryMarshal.AsMemory(buffer)); saea.SocketFlags = socketFlags; saea.WrapExceptionsForNetworkStream = true; return(saea.SendAsyncForNetworkStream(this, cancellationToken)); }