propogate return value out of event callbacks and allow them to drive an exit from the loop. we now shutdown on close :)