Added CancellationToken support