If my app is so resource intensive that I want to make sure the event queue is clear before I do anything, there's no way I'm going to add a library that creates new event listeners for 9 of the most common DOM events. When I want to run some fairly quick code after the event queue empties, I just put it in a setTimeout(fn, 0). If it's a heftier task then I'd consider using a web worker to run it in a different thread.