function pulse(op, changeset, options) {
    this.touch(op, options || NO_OPT);
    const p = new Pulse(this, this._clock + (this._pulse ? 0 : 1)),
      t = op.pulse && op.pulse.source || [];
    p.target = op;
    this._input[op.id] = changeset.pulse(p, t);
    return this;
  }
Pulses an operator with a changeset of tuples. If invoked outside of
a pulse propagation, the pulse will be applied the next time this
dataflow is run. If invoked in the midst of pulse propagation, the pulse
will be added to the set of active pulses and will be applied if and
only if the target operator has not yet been evaluated on the current
propagation timestamp.
@param {Operator} op - The operator to pulse.
@param {ChangeSet} value - The tuple changeset to apply.
@param {object} [options] - Additional options hash.
@param {boolean} [options.skip] - If true, the operator will
  be skipped: it will not be evaluated, but its dependents will be.
@return {Dataflow}