| /** | 
|  * 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; | 
|       } | 
|     } | 
|   } | 
| } |