/// <summary> /// Reads the string async. /// </summary> /// <returns> </returns> private async Task<string> ReadStringAsync(Task<ushort> lengthTask) { //read length ushort len = await lengthTask.AutoConfigureAwait(); if(0 == len) return string.Empty; //read the string segment if(!TryGetSegmentFromBuffer(len)) await ReadSegmentAsync(len).AutoConfigureAwait(); //return parsed string return Encoding.UTF8.GetString(_lastReadSegment.Array, _lastReadSegment.Offset, _lastReadSegment.Count); }