union(other) {
    if (!this.isValid) return this;
    const s = this.s < other.s ? this.s : other.s,
      e = this.e > other.e ? this.e : other.e;
    return Interval.fromDateTimes(s, e);
  }
Return an Interval representing the union of this Interval and the specified Interval.
Specifically, the resulting Interval has the minimum start time and the maximum end time of the two Intervals.
@param {Interval} other
@return {Interval}