И ещё немного "углублю"
С точки зрения менеджера транзакций, код Ваших функций не эквивалентен.
Local =>
один ресурс, который участвует
в одной или двух транзакциях.
Distributed =>
три ресурса, каждый участвует
не более чем в одной транзакции.
Посему и разница в поведении, которая, в случае Local, ещё и усугубляется зависимостью от устройства механизма смены транзакции "на лету" у ресурса.