public override Task WriteAsync(byte[] buffer, int offset, int count, CancellationToken cancellationToken) { Debug.Assert(buffer != _arrayPoolBuffer); _deflateStream.EnsureNotDisposed(); if (count <= 0) { return(Task.CompletedTask); } else if (count > buffer.Length - offset) { // The buffer stream is either malicious or poorly implemented and returned a number of // bytes larger than the buffer supplied to it. return(Task.FromException(new InvalidDataException(SR.GenericInvalidData))); } return(WriteAsyncCore(buffer.AsMemory(offset, count), cancellationToken).AsTask()); }