active (may lose data if not subscribed) • uses same underlying source (broadcasting) • Cold Observable ❄ • paused until subscription • clones underlying source (not broadcasting)
subclassing • Functional, much less types to learn • Separation of Signal & SignalProducer • No shareReplay, refCount (ConnectableObservable) • Typed errors • combineLatest(o1, o2, ...) ... no mixed error types • property <~ signal ... only NoError is allowed