public async Task CancellableTaskTest() { var task1 = new Func <Task <int> >(async() => { await Task.Delay(500); return(2); }); var task2 = new Func <Task>(async() => { await Task.Delay(500); }); var cts1 = new CancellationTokenSource(); var cts2 = new CancellationTokenSource(); var t1 = AsyncUtils.FastCancellableTask(task1(), cts1.Token); var t2 = AsyncUtils.FastCancellableTask(task2(), cts2.Token); await Task.Delay(100); cts1.Cancel(); cts2.Cancel(); await Task.Delay(1); Assert.Equal(TaskStatus.Canceled, t1.Status); Assert.Equal(TaskStatus.Canceled, t2.Status); }