The handle transaction/1 passes to your callback.
Pass it on to run/2, run/3 and save/3 so those statements run inside the
transaction. (Calls that leave it out also join the transaction, as long as they run in
the same process and on the same database.)