I once implemented a progress bar on the web UI of an embedded device for installing an application bundle to the device. It worked great, just counting bytes, .................... until the user switched tabs or to a different window while it was running, and Google Chrome decides "oh, this isn't the current tab anymore, I'm going to throttle the javascript in that tab to 1% of the CPU" and the progress bar... essentially... stops...