if(xhr.responseText.replace(/\s+/g, '') != '' && xhr.responseText.replace(/\s+/g, '').length > 0) - это то зачем?
Можем ли мы в данном случае применить query.abort()
А попробуйте в своем случае.
А вообще, может задаться вопросом, а с какой целью требуется прерывать соединение? Судя по коду вы хотите и древних IE, но тогда надо учесть и их поведение.
Здесь в учебнике не нашел описания проблем (может и не там искал), но в сети много, например
здесь.
Ну и тогда уж погружайтесь в ООП.