public override Task CopyToAsync(Stream destination, int bufferSize, CancellationToken cancellationToken)
{
// Validation as base CopyToAsync would do
StreamHelpers.ValidateCopyToArgs(this, destination, bufferSize);
// Validation as ReadAsync would do
EnsureDecompressionMode();
EnsureNoActiveAsyncOperation();
EnsureNotDisposed();
// Early check for cancellation
if (cancellationToken.IsCancellationRequested)
{
return Task.FromCanceled<int>(cancellationToken);
}
// Do the copy
return new CopyToAsyncStream(this, destination, bufferSize, cancellationToken).CopyFromSourceToDestination();
}