Use a web worker to preserve setTimeout and setInterval in an inactive tab