It looks like transactions are used internally during migration.
Also add finaliser logic for safety. Also better threading. Also more cleanup.
Relies on https://github.com/ppy/osu-framework/pull/1100 being merged for most effectiveness.
Bonus stage