The pause/resume calls are to avoid performing calculations in the monitor that we know will not change visibility.

I think overall there is no race here because there is only a single thread.  The only way `onscreen()` could be called again before we finish the timer function would be if modifying the DOM synchronously caused a mutation handler event.

From what I have seen, it appears gecko asynchronously generates mutation events in batches and does not notify synchronously.  Even if it did, though, I think we would still be fine.  Since we don't re-render already rendered contacts we would only look at a node at most twice.  There may be an extra timer called with an empty `toRender` array.  Still, I don't think that is possible given how gecko emits mutation events.  And of course the pause also helps prevent that.