I am not a fan of wait actions. Because while you are waiting, you might need to change what should happen next.
I made a quick sample of how I would "schedule" a next animation to play. There are two types of animations - looping and non-looping. You always want to change animations at the end, but looping animations don't trigger an On Finished event so you have to look for the first (or last) frame. I chose to look for the first frame because various looping animations could be different lengths. For animations that don't loop, you just need an On Finished event, and if no animation is scheduled while a non-looping animation is playing, then when it finishes, go back to idle.
I figured that there may be situations where you just can't wait for the current animation to finish, so I made one that will always start immediately (the Die animation).
You can get my sample here: http://www.rieperts.com/games/forum/AnimationSchedule.capx
my sample doesn't queue up multiple animations... if the walk animation is playing and you quickly press jump and attack, it will switch directly to attack (or whatever the "NextAnimation" is set to when the current one ends). But if you want a queue, that wouldn't be hard to do.
I was just discussing this with my son, and he reminded me that Spriter has built in animation blending - so you may want to check that out too.