That was it - AutoCommit.
I set AutoCommit to 0 - it turns out that AutoCommit must be 1 in order to handle begin_work
Is there any way to enforce all code happen within a begin / ( commit/rollback) bookends? It seems that with AutoCommit 0, there is no way to begin; and with autocommit 1 there is no way to force code to happen without an explicit transaction declaration.