Use queues and tasks appropriate to the job.

Queues for things that don't need to be immediate/responsive, sequential, and can easily be cleared outside the closures.
Use set_timeout for when you want it to be exactly the next tick -- responsive.

I'm still not sure exactly on the ideal uses for these, but at least these changes shouldn't be noticeable.