A slonik script like try { uninstall node(id=1); } or try { update functions(id=1); } won't work if you are upgrading from a version of slony earlier than 2.1 because the sl_event_lock table does not exist. The try block will try to obtain an event lock but the table won't exist until after the update functions runs.
I wonder if perhaps we ought to disallow putting these commands within a TRY block. Or perhaps better, disallow combining these commands with anything else. You can't expect try { uninstall node (id=1); uninstall node (id=2); } to behave in a rollable-back-fashion...
I find the ability to do try { uninstall node(id=1); } very useful. It isn't about rolling back it is about being able to catch and recover from the error if slony isn't installed.