qbit/core/src/main/java/io/advantageous/qbit/reactive/CallbackBuilder.java
public <T> CallbackBuilder delegateWithLogging(final Callback<T> callback, final Logger logger,
                                                   final String operationName) {

        this.withErrorHandler(throwable -> {
            logger.error(operationName + " ERROR ", throwable);
            callback.onError(throwable);
        });

        this.withTimeoutHandler(() -> {
            logger.error(operationName + " TIMED OUT ");
            callback.onTimeout();
        });

        return this;
    }
public <T> CallbackBuilder delegateWithLogging(final Callback<T> callback, final Logger logger,
                                                   final String operationName) {

        this.withErrorHandler(throwable -> {
            logger.error(operationName + " ERROR ", throwable);
            callback.onError(throwable);
        });

        this.withTimeoutHandler(() -> {
            logger.error(operationName + " TIMED OUT ");
            callback.onTimeout();
        });

        return this;
    }
Builder method to delegate timeout and error handling to other callback.

@param callback      callback
@param logger        logger
@param operationName method name or thing you are doing.
@param <T>           T
@return this, fluent