code: function() {
      var versions = ["Msxml2.XMLHTTP",
                      "Msxml3.XMLHTTP",
                      "Microsoft.XMLHTTP",
                      "MSXML2.XmlHttp.6.0",
                      "MSXML2.XmlHttp.5.0",
                      "MSXML2.XmlHttp.4.0",
                      "MSXML2.XmlHttp.3.0",
                      "MSXML2.XmlHttp.2.0"
      ]
  
      if(XMLHttpRequest !== undefined) {  // For non-IE browsers
          createXMLHTTPObject = function() {  // Use memoization to cache the factory
              return new XMLHttpRequest()
          }
          return createXMLHTTPObject()
  
      } else { // IE
          for(var i=0, n=versions.length; i<n; i++) {
              try {
                  var version = versions[i]
                  var fn = function() {
                      return new ActiveXObject(version)
                  }
                  createXMLHTTPObject = fn   // Use memoization to cache the factory
                  return createXMLHTTPObject()
  
              } catch(e) {   }
          }
      }
  
      throw new Error('Cant get XmlHttpRequest object')
  }
docs: returns the XHR function or equivalent for use with ajax memoizes the function for faster repeated use