public async Task WhenIncrementsAndDecrementsAreBelowTripLevel_ThenDoesNotStallOnCheck() { var cts = new CancellationTokenSource(); Parallel.For( 0, 25, i => { _circuitBreaker.Increment(); if (i % 2 == 0) { _circuitBreaker.Decrement(); } }); Task checkTask; await Task.WhenAny( checkTask = _circuitBreaker.CheckBreak(cts.Token), Task.Delay(timeoutInterval)); Assert.True(checkTask.Status == TaskStatus.RanToCompletion); cts.Cancel(); await checkTask; }