This leads to unusual behavior if you do something as simple as tab away while one of them is playing for about 10 seconds. On both Chrome and Firefox, that will result in, when you tab back, complete gibberish as multiple timeouts that triggered while you were away both begin "typing" their text. I think the correct solution here is to have all callbacks drawing text depend on the previous one completing (since there's no overlaps, this should work well enough).
That entire sequence also felt very trite to me, but I can see how it could be appealing.