code: function hook() {
        if (self.hooked)
          return;
  
        // Monkey patching the 'open' method
        XMLHttpRequest.prototype.open = before(
          XMLHttpRequest.prototype.open,
          function(method, url, async) {
            var xhr = this;
  
            // Overloading the xhr object
            xhr._spy = {
              method: method,
              url: url,
              params: artoo.parsers.url(url).query
            };
          }
        );
  
        // Monkey patching the 'send' method
        XMLHttpRequest.prototype.send = before(
          XMLHttpRequest.prototype.send,
          function(data) {
            var xhr = this;
  
            // Overloading the xhr object
            if (data) {
              xhr._spy.querystring = data;
              xhr._spy.data = artoo.parsers.queryString(data);
            }
  
            // Triggering listeners
            self.listeners.forEach(function(listener) {
              if (listener.criteria === '*')
                listener.fn.call(xhr, xhr._spy);
            });
          }
        );
  
        self.hooked = true;
      }
docs: Privates