run(pulse) {
      if (pulse.stamp < this.stamp) return pulse.StopPropagation;
      let rv;
      if (this.skip()) {
        this.skip(false);
        rv = 0;
      } else {
        rv = this.evaluate(pulse);
      }
      return this.pulse = rv || pulse;
    }
Run this operator for the current pulse. If this operator has already
been run at (or after) the pulse timestamp, returns StopPropagation.
Internally, this method calls {@link evaluate} to perform processing.
If {@link evaluate} returns a falsy value, the input pulse is returned.
This method should NOT be overridden, instead overrride {@link evaluate}.
@param {Pulse} pulse - the current dataflow pulse.
@return the output pulse for this operator (or StopPropagation)