Ensure callers can't have loads of timers running

Its not completely obvious that calling promote() multiple times will trigger many timers.

Its also not very difficult to protect callers from this, so here's a patch to do this.

I've recently been tracking down a memory leak that ended up being caused by promote() being called in a different Interval timer loop.