The functions provided by EV::Watcher::Bind also has the advantage of passing you the EV::Watcher object that caused your callback to execute as the last argument in your callback. In the above example, foo() could have be implemented like so: