Open
Description
In usage a HttpRequestStream & DuplexPipeStream normally has very many ReadAsync calls made on them. (Use case WebSockets/SignalR over TLS)
Using the ValueTask overloads for these Streams read allocates a AsyncStateMachineBox per read (when data is not immediately available)
However it could use TryRead
for the sync-path and allocating a IValueTaskSource object the first time that fails to back the async read, and then reuse it each time the read needs to go async again.