public static Task WriteAsync(this Stream stream, byte[] bytes, int offset, int count, CancellationToken cancellationToken = default(CancellationToken)) { var factory = cancellationToken.Equals(default(CancellationToken)) ? Task.Factory : new TaskFactory(cancellationToken); return factory.FromAsync(stream.BeginWrite, stream.EndWrite, bytes, offset, count, null); }