public async Task<byte[]> ReadShortBytesAsync()
{
ushort len = await ReadShortAsync().AutoConfigureAwait();
if(len == 0)
return new byte[0];
//read the data segment
if(!TryGetSegmentFromBuffer(len))
await ReadSegmentAsync(len).AutoConfigureAwait();
//copy data from buffer into new array if necessary
byte[] data = _lastReadSegment.Array == _buffer ? CopySegmentToArray() : _lastReadSegment.Array;
return data;
}