If you use raf, you're guaranteed to lose a frame's worth of transition time even if you visually don't see anything change on next tick. Also we need to be careful about what the state of the DOM is on the next raf. Ideally it should be exactly what was rendered previously, and we wouldn't want to see the className of a node being empty in two frames, for example.