wait should not call callback twice if callback fails
Event loop should act more like real browser:
- Don't suspend/resume timeout/interval
- Ignore interval firing if previous has not run