John and I discussed that in another line note. There's a race condition: the new window could load *before* the onload callback has been set up, meaning it never gets fired. Using both covers every case – if the window loads faster than the callback can be added, the timer gets it, otherwise the callback does.