code: function processEvent(event, envelope) {
        const array = actions[event.topic];
        const time = now();
        const newEvent = self.lastTime[event.topic] + self.newMouseTimeout < time;
        let count = array.length;
        let changeDetected = false;
        let eventHandled = false;
  
        // Check all associated actions
        while (count) {
          count -= 1;
          const item = array[count];
          const deltaName = item.coordinate === 0 ? 'deltaX' : 'deltaY';
  
          if (newEvent) {
            item.lastCoord = 0;
          }
  
          /* eslint-disable no-bitwise */
          if (
            item.modifier & event.modifier ||
            item.modifier === event.modifier
          ) {
            eventHandled = true;
            event.preventDefault(); // Consume event
            const delta = event[deltaName] - item.lastCoord;
            self.lastTime[event.topic] = time;
  
            if (Math.abs(delta) > item.step) {
              item.lastCoord = Number(event[deltaName]);
  
              if (item.orientation * delta > 0) {
                changeDetected = self.next(item.name) || changeDetected;
              } else {
                changeDetected = self.previous(item.name) || changeDetected;
              }
            }
          }
        }
  
        if (changeDetected) {
          self.lazyFetchData(); // FIXME category
        }
  
        return eventHandled;
      }
docs: /* eslint-disable complexity