con setInterval non hai bisogno ogni volta di creare un timeout, quindi ci guadagni in termini di prestazioni e semplicità.

In ogni caso non è certo questo che ti dava problemi, è solo un piccolo ritocco.
I veri problemi sono gli altri due.