added util.variable.Event.watch_weakref for code reuse