I also changed the polling logic to slowly back off forever, instead of giving up after waiting 10 seconds for parsing.

I'm hoping this will avoid a really spooky class of bugs, like the browser backgrounded the tab but it still runs setTimeouts periodically, or batches a thousand of them and runs them when the tab is foregrounded, etc.