That makes sense, but it does look a bit tricky. So, I
assume you would
really want to hit the "undo" block if the fork fails;
and maybe you would want to make sure the fork call is the
last step in the eval block, so that if any of the other
steps fail, you could save yourself the trouble of forking
before undoing things.
When the fork "succeeds", then any problems encountered by
the child will be asynchronous with respect to this process,
right? And that might make it hard to "undo"
whatever the child does, I think. (I'm sure there's a way
to deal with that, but as I said, fork is not one of my