Por que um paralelismo ForkJoinPool duplica minha exceção?

assumindo que eu tenho o código como abaixo:

Future<Object> executeBy(ExecutorService executor) {
    return executor.submit(() -> {
        throw new IllegalStateException();
    });
}

não há problema ao usarForkJoinPool#commonPool, mas quando eu uso um paralelismoForkJoinPool dobrará oIllegalStateException. por exemplo:

executeBy(new ForkJoinPool(1)).get(); 
//                              ^--- double the IllegalStateException

Q1: por que o paralelismoForkJoinPool dobrar oException ocorre noCallable?

Q2: como evitar esse comportamento estranho?

questionAnswers(2)

yourAnswerToTheQuestion