@Override
    public Boolean apply(ClientRequestContext ctx, Throwable cause) {
        final RequestLog log = ctx.log().partial();
        final HttpRequest request = ctx.request();
        if (request != null && !requestHeadersFilter.test(ctx, request.headers())) {
            return false;
        }

        // Safe to return true since no filters are set
        if (exceptionFilter == null && responseHeadersFilter == null &&
            responseTrailersFilter == null && grpcTrailersFilter == null &&
            totalDurationFilter == null && !hasResponseFilter) {
            return true;
        }

        return applySlow(ctx, cause, log);
    }
Merges the filters of {@link AbstractRuleBuilder} that returns {@code true}
if all rules in the {@link AbstractRuleBuilder} match
a given {@link ClientRequestContext} and {@link Throwable}.
core/src/main/java/com/linecorp/armeria/internal/client/RuleFilter.java