/** 
 | 
 * Gets what should be in the `response` property of the XHR. However, 
 | 
 * since we still support the final versions of IE, we need to do a little 
 | 
 * checking here to make sure that we get the right thing back. Consequently, 
 | 
 * we need to do a JSON.parse() in here, which *could* throw if the response 
 | 
 * isn't valid JSON. 
 | 
 * 
 | 
 * This is used both in creating an AjaxResponse, and in creating certain errors 
 | 
 * that we throw, so we can give the user whatever was in the response property. 
 | 
 * 
 | 
 * @param xhr The XHR to examine the response of 
 | 
 */ 
 | 
export function getXHRResponse(xhr: XMLHttpRequest) { 
 | 
  switch (xhr.responseType) { 
 | 
    case 'json': { 
 | 
      if ('response' in xhr) { 
 | 
        return xhr.response; 
 | 
      } else { 
 | 
        // IE 
 | 
        const ieXHR: any = xhr; 
 | 
        return JSON.parse(ieXHR.responseText); 
 | 
      } 
 | 
    } 
 | 
    case 'document': 
 | 
      return xhr.responseXML; 
 | 
    case 'text': 
 | 
    default: { 
 | 
      if ('response' in xhr) { 
 | 
        return xhr.response; 
 | 
      } else { 
 | 
        // IE 
 | 
        const ieXHR: any = xhr; 
 | 
        return ieXHR.responseText; 
 | 
      } 
 | 
    } 
 | 
  } 
 | 
} 
 |