Примерно как 
e1f писал, вот так по сути у меня:
function xxx()
{
    var s = new XMLHttpRequest(); 
    s.open('GET', url, true); 
    s.onreadystatechange = function(){
       if (this.readyState == 4) console.info('Completed')
    }; 
    s.send(null); 
}
Т.е. в функции объект задан как локальный var.
По сути после выхода из функции ссылка на объект станет недоступной, а сам объект еще будет работать - прорабатывать свои события и верно завершится на readyState == 4. Почему? Что с ним будет дальше?
 
Gvozd спасибо за ссылки, сейчас читаю.