private String rejectedExecutionErrorMessage(String prefix) {
        int activeCount = executor.getActiveCount();
        int queueSize = executor.getQueue().size();
        return String.format("%s, %d active, %d in queue", prefix, activeCount, queueSize);
    }
Completes the given prompt, mostly asynchronously with or without a blocking wait.
It is used by both `complete()` and `completeAsync()` with different `offerTimeout` values.
When set to 0, there is no blocking wait, the request is either added to the queue or rejected immediately.
When larger than 0 and the queue is full, there will be a blocking wait up to `offerTimeout` milliseconds.
This blocking is used for throttling the incoming requests, propagating the delay up the stack.
model-integration/src/main/java/ai/vespa/llm/clients/LocalLLM.java