detachEvent no funciona con funciones en línea con nombre

Me encontré con un problema en IE8 hoy (tenga en cuenta que solo necesito admitir IE) que parece que no puedo explicar: detachEvent no funcionaría al usar un controlador de funciones anónimo con nombre.

document.getElementById('iframeid').attachEvent("onreadystatechange", function onIframeReadyStateChange() {
    if (event.srcElement.readyState != "complete") { return; }

    event.srcElement.detachEvent("onreadystatechange", onIframeReadyStateChange); 

    // code here was running every time my iframe's readyState 
    // changed to "complete" instead of only the first time
});

Eventualmente descubrí que cambiar onIframeReadyStateChange para usar argumentos.callee (que normalmente evito) en su lugar resolvió el problema:

document.getElementById('iframeid').attachEvent("onreadystatechange", function () {
    if (event.srcElement.readyState != "complete") { return; }

    event.srcElement.detachEvent("onreadystatechange", arguments.callee);    

    // code here now runs only once no matter how many times the 
    // iframe's readyState changes to "complete"
});

¡¿Lo que da?! ¿No debería funcionar bien el primer fragmento?

Respuestas a la pregunta(1)

Su respuesta a la pregunta