This should be in a timeout, and really with an inline comment explaining that it won't be fired unless do_wait gets killed