Not buying a lot by using requestAnimationFrame as it's not available on the server side or for Chrome extension background pages.  The behavior of requestAnimationFrame in the background tab is different for different browsers so it's not always predictable insta-savings.  Likewise, setTimeout actually exhibits some of the behaviors of requestAnimationFrame when put in the background.  So, let's just go with compatibility and we can swing back around when we think we need to ease up on the gas.

http://stackoverflow.com/questions/15871942/how-do-browsers-pause-change-javascript-when-tab-or-window-is-not-active