@Override
    public boolean tryRequest() {
        final State currentState = state();
        if (currentState.isClosed()) {
            // all requests are allowed during CLOSED
            return true;
        }

        if (currentState.isForcedOpen()) {
            notifyRequestRejected();
            return false;
        }

        if (currentState.isHalfOpen() || currentState.isOpen()) {
            if (currentState.checkTimeout() && state.compareAndSet(currentState, newHalfOpenState())) {
                // changes to HALF_OPEN if OPEN state has timed out
                logStateTransition(CircuitState.HALF_OPEN, null);
                notifyStateChanged(CircuitState.HALF_OPEN);
                return true;
            }
            // all other requests are refused
            notifyRequestRejected();
            return false;
        }

        return true;
    }
Creates a new {@link NonBlockingCircuitBreaker} with the specified {@link Ticker} and
{@link CircuitBreakerConfig}.
core/src/main/java/com/linecorp/armeria/client/circuitbreaker/NonBlockingCircuitBreaker.java