public static async Task WriteResponseAsync <TResponse>(Stream ms, TResponse response, ICompressionProvider compressionProvider) where TResponse : IMessage <TResponse> { var compress = false; byte[] data; if (compressionProvider != null) { compress = true; var output = new MemoryStream(); var compressionStream = compressionProvider.CreateCompressionStream(output, System.IO.Compression.CompressionLevel.Fastest); var compressedData = response.ToByteArray(); compressionStream.Write(compressedData, 0, compressedData.Length); compressionStream.Flush(); compressionStream.Dispose(); data = output.ToArray(); } else { data = response.ToByteArray(); } await ResponseUtils.WriteHeaderAsync(ms, data.Length, compress, CancellationToken.None); #if NET5_0_OR_GREATER await ms.WriteAsync(data); #else await ms.WriteAsync(data, 0, data.Length); #endif }