run(pulse) {
      if (pulse.stamp < this.stamp) return pulse.StopPropagation;
      let rv;
      if (this.skip()) {
        this.skip(false);
      } else {
        rv = this.evaluate(pulse);
      }
      rv = rv || pulse;
      if (rv.then) {
        rv = rv.then(_ => this.pulse = _);
      } else if (rv !== pulse.StopPropagation) {
        this.pulse = rv;
      }
      return rv;
    }
Overrides {@link Operator.evaluate} for transform operators.
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)