internal static async Task<MessageEncodingStream> CreateAsync(
WriteBuffer rawBuffer, S101Message message, CancellationToken cancellationToken)
{
message.PacketFlags =
PacketFlags.FirstPacket | (message.CanHaveMultiplePackets ? PacketFlags.None : PacketFlags.LastPacket);
var framingStream = await FramingStream.CreateAsync(rawBuffer, cancellationToken);
var result = new MessageEncodingStream(message, rawBuffer, framingStream);
await message.WriteToAsync(result.unframedBuffer, cancellationToken);
return result;
}