protected void doApplyFailure(PolicyFailure failure) {
        try {
            this.failure = failure;

            if(firstElem) {
                chainPolicyHandlers();
                firstElem = false;
            }

            if (policyIterator.hasNext()) {
                applyFailure(policyIterator.next(), getContext());
            } else {
                policyFailureHandler.handle(failure);
            }
        } catch (Throwable error) {
            throwError(error);
        }
    }
@see io.apiman.gateway.engine.policy.IPolicyChain#doApply(java.lang.Object)
gateway/engine/core/src/main/java/io/apiman/gateway/engine/policy/Chain.java