@Override
    public T getNow(T valueIfAbsent) throws ExecutionException {
        try {
            return completableFuture.getNow(valueIfAbsent);
        } catch (CompletionException e) {
            maybeThrowCancellationException(e.getCause());
            // Note, unlike CompletableFuture#get() which throws ExecutionException, CompletableFuture#getNow()
            // throws CompletionException, thus needs rewrapping to conform to KafkaFuture API,
            // where KafkaFuture#getNow() throws ExecutionException.
            throw new ExecutionException(e.getCause());
        }
    }
Returns the result value (or throws any encountered exception) if completed, else returns
the given valueIfAbsent.
clients/src/main/java/org/apache/kafka/common/internals/KafkaFutureImpl.java