These would-be generalized object-level transactions look somewhat dangerous in an imperative side-effecting I/O world. Not that they can't be useful in contained scenarios.