I know I suggested the change from setInterval() to setTimeout(), but I'm not longer convinced that it gets us much more safety. I think we could still get into a race condition here.  Would you add a clearTimeout(this.timeout) before the setTimeout call, just to be sure that you're not overwriting an existing timeout?