void close(@Nullable Throwable cause, boolean cancel) {
        if (closed) {
            return;
        }
        done = true;
        closed = true;
        cancelTimeoutAndLog(cause, cancel);
        final HttpRequest request = ctx.request();
        assert request != null;
        if (cause != null) {
            request.abort(cause);
            return;
        }
        final long requestAutoAbortDelayMillis = ctx.requestAutoAbortDelayMillis();
        if (requestAutoAbortDelayMillis < 0 || requestAutoAbortDelayMillis == Long.MAX_VALUE) {
            return;
        }
        if (requestAutoAbortDelayMillis == 0) {
            request.abort(ResponseCompleteException.get());
            return;
        }
        ctx.eventLoop().schedule(() -> request.abort(ResponseCompleteException.get()),
                                 requestAutoAbortDelayMillis, TimeUnit.MILLISECONDS);
    }
This method is called when the delegate is completed.
core/src/main/java/com/linecorp/armeria/client/HttpResponseWrapper.java