public async Task SendAsync() { var tcs = new TaskCompletionSource <bool>(); await _mt.SendAsync(() => tcs.TrySetResult(true), CancellationToken.None); tcs.Task.IsCompleted.Should().BeTrue(); var cts = new CancellationTokenSource(); cts.Cancel(); var t = _mt.SendAsync(() => { }, cts.Token); bool thrown = false; try { await t; } catch (TaskCanceledException) { thrown = true; } t.IsCanceled.Should().BeTrue(); thrown.Should().BeTrue(); }