transactions: avoid late tear-down (issue641)
We use weak references (ugh) to avoid having to manually delete
transaction references out of each call frame when an exception occurs.
error: pretxncommit.nocommits hook failed: no commits allowed
transaction abort!
rollback completed
abort: no commits allowed
error: pretxncommit.nocommits hook failed: no commits allowed
transaction abort!
rollback completed
abort: no commits allowed