если у вас
если б
затем b работает только если retry вызывается явно в a. В противном случае orElse по существу станет недетерминированным. (Повторный запуск транзакций, выполняемый средой выполнения STM, прозрачен и не должен влиять на результат каких-либо вычислений.)