Why don't you register in the scenario?  Is this to close race conditions?  Do we need phased scenarios, e.g.

    t.add_setup_scenario do
      caller.register
    end
    t.add_test_scenario do
      ...
    end
    t.add_cleanup_scenario do
      caller.unregister
    end

This would be good actually, since we can `ensure` the cleanup gets run.