Make failed XHR requests trigger the onreadystatechange callback
XHR.responseText should be the empty string on an error