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