Note that just setting videoPlaying to false outside of the setTimeout() call probably doesn't work either, because then in the same rapid pause/play scenario, handleVideoPlay() does run, fades out the toolbar immediately, then when this setTimeout fires, we fade the preview in.    I don't see an easy way around the race condition other than getting rid of the setTimeout and dealing with the cross fade issue.

If a cross-fade looks really bad, maybe the workaround is to get rid of the setTimeout and tweak the animations to use transition-delay (or whatever the CSS property is called) so that the animation doesn't begin right away.  

And actually, I've remembered that the newest design for the preview gallery moves the toolbar up top, away from the video player controls, so in that situation, cross fading ought to be just fine.  Let's keep it simple.