This method should evaluate the code reference in the context of a transaction, inside an eval. If any errors are caught the transaction should be aborted, otherwise it should be committed. This is much like "txn_do" in DBIx::Class::Schema.

The rollback callback should be fired when the transaction will be aborted.