а ящик (box) действительно присутствует
А получается что evaluation выдает в качестве результата такой ящик, где либо хранится вычисленное значение, либо exception (если в процессе вычисления наткнулся на throw) и все последующие, верхние вычисления с использованием этого бажного вычисления будут тупо брать этот exception и выдавать как свой результат? А на этапе вычисления можно отловить эти вычисления? Ну типа, да, вычисления, да есть exception, но вот где-то дальше там по ходу вычисления есть аля-catch и вычислятор смотрит, а что там за catch и дергает его и если не сложилось, то продолжает протакливать исключение выше. Или же вычислятор этим не парится и говорит, что нах, результат всего вычисления есть исключение и ты, executor сам парся с ним, ищи catch и пропихивай и сам решай что исполнять. Но в этом случае получается я всю муть с глубины должен поднимать на уровень IO?