I also don't think that WFO hangs. It might be some other function or endless loop in your script. You can find out with watch() statements at suspicious places.