@Override
    protected HttpResponse doExecute(ClientRequestContext ctx, HttpRequest req,
                                     CircuitBreakerCallback callback)
            throws Exception {
        final CircuitBreakerRule rule = needsContentInRule ? fromRuleWithContent() : rule();
        final HttpResponse response;
        try {
            response = unwrap().execute(ctx, req);
        } catch (Throwable cause) {
            reportSuccessOrFailure(callback, rule.shouldReportAsSuccess(ctx, cause), ctx, cause);
            throw cause;
        }
        final RequestLogProperty property =
                rule.requiresResponseTrailers() ? RequestLogProperty.RESPONSE_END_TIME
                                                : RequestLogProperty.RESPONSE_HEADERS;

        if (!needsContentInRule) {
            reportResult(ctx, callback, property);
            return response;
        } else {
            return reportResultWithContent(ctx, response, callback, property);
        }
    }
Creates a new instance that decorates the specified {@link HttpClient}.
core/src/main/java/com/linecorp/armeria/client/circuitbreaker/CircuitBreakerClient.java