Registers a thunk to be executed after the transaction successfully committed.
Every transaction has a plain Scala-STM transaction as a peer.
Every transaction has a plain Scala-STM transaction as a peer. This comes handy for
setting up custom things like TxnLocal, TMap, or calling into the hooks of concurrent.stm.Txn.
It is also needed when re-wrapping the transaction of one system into another.
This is a minimal trait for any type of transactions that wrap an underlying Scala-STM transaction.