private async Task<string> ReadToEndAsyncInternal()
{
// Call ReadBuffer, then pull data out of charBuffer.
StringBuilder sb = new StringBuilder(CharLen_Prop - CharPos_Prop);
do
{
int tmpCharPos = CharPos_Prop;
sb.Append(CharBuffer_Prop, tmpCharPos, CharLen_Prop - tmpCharPos);
CharPos_Prop = CharLen_Prop; // We consumed these characters
await ReadBufferAsync().ConfigureAwait(false);
} while (CharLen_Prop > 0);
return sb.ToString();
}