Not using the "waiting for event" approach would, at least, have the consequence not having a "closed" _save_work method any more, which does all the stuff, but several independent functions which would conceal the application's logic, i.e., this would make it harder to understand the code.
There's a reason one usually doesn't have one function which does "all the work". Afaict _save_work should just, well, save the work, not do UI teardown and other stuff. Doing one thing per function usually increases readability, not decreases it.