public async Task Precancelled()
        {
            var e   = new AutoResetEventAsync(false);
            var src = new CancellationTokenSource();

            src.Cancel();
            await TaskHelpers.AssertCancelled(e.WaitAsync(src.Token));
        }
        public async Task DelayCancelled()
        {
            var  e         = new AutoResetEventAsync(false);
            var  src       = new CancellationTokenSource();
            Task waitAsync = e.WaitAsync(src.Token);

            src.CancelAfter(TimeSpan.FromSeconds(TaskHelpers.WaitTime.TotalSeconds / 2));
            await TaskHelpers.AssertCancelled(waitAsync);
        }
        public async Task DoubleCanncelled()
        {
            var  e          = new AutoResetEventAsync(false);
            var  src        = new CancellationTokenSource();
            Task waitAsync  = e.WaitAsync(src.Token);
            Task wait2Async = e.WaitAsync(src.Token);

            src.Cancel();
            await TaskHelpers.AssertCancelled(waitAsync);

            await TaskHelpers.AssertCancelled(wait2Async);
        }
        public async Task ReceiveNoData_Cancelled()
        {
            (Stream a, Stream b) = PairedStream.Create();
            var buffer = new byte[s_bytes.Length * 2];
            var cts    = new CancellationTokenSource();

            Task[] tasks =
            {
                a.ReadAsync(buffer, 0, buffer.Length, cts.Token),
                b.ReadAsync(buffer, 0, buffer.Length, cts.Token)
            };
            await TaskHelpers.AssertNotTriggered(tasks[0]);

            await TaskHelpers.AssertNotTriggered(tasks[1]);

            cts.Cancel();

            await TaskHelpers.AssertCancelled(tasks[0]);

            await TaskHelpers.AssertCancelled(tasks[1]);
        }