fileChanged(listenerPath, changedPath, eventType, changeCallback, errorCallback) {
    try {
      if (fs.existsSync(listenerPath)) {
        const newEventType = this.convertEventType(eventType);
        this.filesChanged[changedPath] = { eventType: newEventType, path: changedPath};
        // Since multiple changes can occur at the same time, lets wait a bit before processing.
        if (this.fsWait) return;
        this.fsWait = setTimeout(async () => {
          await changeCallback(this.filesChanged);
          this.filesChanged = {};
          this.fsWait = false;
        }, 500);
      }
    } catch (e) {
      // File was not, find all files that are missing..
      const unknownPaths = this.getAllNonExistingPaths();
      this.closeWatchers();
      errorCallback(unknownPaths);
    }
  }
Should be called when a file has changed one way or another.
@param {*} listenerPath The path the watcher is listening on.
@param {*} changedPath The file/dir that was changed
@param {*} eventType What kind of change
@param {*} changeCallback Callback to call when changed occur.
@param {*} errorCallback Calback to call when it is no longer possible to watch a file.