Stop swallowing exceptions from`after_commit` callbacks

also

Rollback a transaction only if we have neither finished committing nor rolling back