function on(source, target, update, params, options) {
    const fn = source instanceof Operator ? onOperator : onStream;
    fn(this, source, target, update, params, options);
    return this;
  }
Perform operator updates in response to events. Applies an
update function to compute a new operator value. If the update function
returns a {@link ChangeSet}, the operator will be pulsed with those tuple
changes. Otherwise, the operator value will be updated to the return value.
@param {EventStream|Operator} source - The event source to react to.
  This argument can be either an EventStream or an Operator.
@param {Operator|function(object):Operator} target - The operator to update.
  This argument can either be an Operator instance or (if the source
  argument is an EventStream), a function that accepts an event object as
  input and returns an Operator to target.
@param {function(Parameters,Event): *} [update] - Optional update function
  to compute the new operator value, or a literal value to set. Update
  functions expect to receive a parameter object and event as arguments.
  This function can either return a new operator value or (if the source
  argument is an EventStream) a {@link ChangeSet} instance to pulse
  the target operator with tuple changes.
@param {object} [params] - The update function parameters.
@param {object} [options] - Additional options hash. If not overridden,
  updated operators will be skipped by default.
@param {boolean} [options.skip] - If true, the operator will
 be skipped: it will not be evaluated, but its dependents will be.
@param {boolean} [options.force] - If true, the operator will
  be re-evaluated even if its value has not changed.
@return {Dataflow}