merge method Null safety

Timeout merge(
  1. Timeout other

Returns a new Timeout that merges this with other.

Timeout.none takes precedence over everything. If timeout is Timeout.none and other declares a duration, that takes precedence. Otherwise, this timeout's duration or factor are multiplied by other's factor.


Timeout merge(Timeout other) {
  if (this == none || other == none) return none;
  if (other.duration != null) return Timeout(other.duration);
  if (duration != null) return Timeout(duration! * other.scaleFactor!);
  return Timeout.factor(scaleFactor! * other.scaleFactor!);