Animation Buffer:
Here's a simple buffering solution. It provides two commands:

add(fn) which adds a given function to the buffer, and
next() which moves onto the next command. This is passed onto the functions when they are called.
To use this, put your animations inside an anonymous function to be passed onto add(). Be sure to trigger next() when the animations are done.