/// <inheritdoc/>
        private bool IsOpen()
        {
            if (CircuitIsOpen)
            {
                return(true);
            }

            // we're closed, so let's see if errors have made us so we should trip the circuit open
            HystrixHealthCounts healthCounts = commandMetrics.GetHealthCounts();

            // check if we are past the CircuitBreakerRequestVolumeThreshold
            if (healthCounts.GetTotalRequests() < configurationService.GetCircuitBreakerRequestVolumeThreshold())
            {
                // we are not past the minimum volume threshold for the statisticalWindow so we'll return false immediately and not calculate anything
                return(false);
            }

            // if error percentage is below threshold the circuit remains closed
            if (healthCounts.GetErrorPercentage() < configurationService.GetCircuitBreakerErrorThresholdPercentage())
            {
                return(false);
            }

            // failure rate is too high, trip the circuit (multiple threads can come to these lines, but do we care?)
            OpenCircuit();

            return(true);
        }