Javascript: xmlhttprequest preso aleatoriamente no estado pronto 1

Eu tenho trabalhado em um gadget do Windows (ou seja, o "navegador" é o Internet Explorer) que consulta endereços de sub-rede especificados para obter informações. Agora, às vezes, faz isso em um ritmo relativamente rápido (aproximadamente a cada 5 segundos) e funciona bem o suficiente. No entanto, às vezes ele fica preso no estado pronto 1 e fica lá para sempre. Sempre que o gadget tentar refazer a função para obter o xmlhttprequest e obter informações dele, ele permanecerá no estado 1. Isso é facilmente replicável ao abrir várias instâncias do gadget e depois fechar todas, exceto uma. Nesse ponto, o que ainda está aberto quase sempre fica preso nesse estado. Eu sinto que pode ter algo a ver com o acesso a todos no mesmo site, ou pode ter a ver apenas com os pedidos xmlhtt sendo interrompidos durante a transmissão e impedindo que outro funcione. Abaixo está o código relevante.

//Reference to this for the inner function
var me = this;
var request = new XMLHttpRequest();
request.onreadystatechange = onReadyStateChange;
var url = this.url;
//Make the URL random to prevent being cached
url += ("&a=" + ((new Date()).getTime()));
Trace(DEBUG_COMM, "Sase.updateStatus url: " + url);
request.open("GET", url, true);
request.send();   // fire off the request, calls httpRequestReadyStateChange as things continue
Trace(DEBUG_COMM, "Request sent" + request.readyState); 
function onReadyStateChange() {Trace(DEBUG_COMM, "Sase.httpRequestReadyStateChange: state=" + request.readyState);
    if (4 == request.readyState) {
        Trace(DEBUG_COMM, "Sase.httpRequestReadyStateChange: status=" + request.status);

        if (request.status == 200) {
            Trace(DEBUG_COMM, "retrieved html: " + request.responseText);
            var results = request.responseText;
            var resultsString = request.responseText.toString();
            Trace(DEBUG_COMM, "results String: " + resultsString);
            me.ParseStatusData(resultsString);
        }
        else {
            //me.commError(request.status);
        }

        request = null;
    }
}

questionAnswers(2)

yourAnswerToTheQuestion