docs: function onDelayed(delay, throttle, eventNames, selector, listener) {
      if (typeof throttle !== 'boolean') {
          listener = selector;
          selector = eventNames;
          eventNames = throttle;
          throttle = false;
      }
  
      if (typeof selector === 'function') {
          listener = selector;
          selector = undefined;
      }
  
      var wait = undefined;
      this.on(eventNames, selector, /** @function 
                                    * @param {...*} args */function () {
          for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
              args[_key] = arguments[_key];
          }
  
          var _this = this;
  
          if (!throttle) {
              clearTimeout(wait);
              wait = null;
          }
  
          if (!wait) {
              wait = setTimeout(function () {
                  wait = null;
                  listener.apply(_this, args);
              }, delay);
          }
      });
  }