takeUntil
Mirrors the upstream until signal emits its first value, then completes.
If signal completes without emitting, the upstream is mirrored to completion. A failure in either the upstream or signal fails the resulting flow. Values are handed to the collector without buffering, so nothing is delivered after the signal fires.