* the closure has other problems - doesn't work with async (should be fixed in a future version of rust, but likely years away) - not dyn-safe - code size bloat: the closure is a generic param of `fn transaction`, so if you call it 2 times you're instantiating it 2 times, the "set cs, clear cs" code will likely get duplicated