Du hast einmal in der Funktion und einmal im globalen scope
var xmlHttp = null;
stehen.
Der Browser sendet den Request, wartet auf das Ergebnis um es dem Objekt zu geben. Jetzt wird das Objekt aber zerstört und neu aufgebaut. Wie würdest Du den Browser programmieren?
Richtig. Da das alte Objekt nicht mehr da ist verwirft er die Daten - falls die für das alte Objekt womöglich doch noch kommen. Oder er hört sogar damit auf an einem Port auf die Daten für den alten Request zu warten. In dem Fall wird dann das Betriebssystem die dafür geöffnete Verbindung zum Server schließen.
fred