docs: private static CounterException rethrowAsCounterException(Throwable throwable) {
        //make it public if needed.
        if (throwable instanceof CounterException) {
           return (CounterException) throwable;
        } else if (throwable instanceof ExecutionException || throwable instanceof CompletionException) {
           return rethrowAsCounterException(throwable.getCause());
        } else {
           return new CounterException(throwable);
        }
     }