RxJS will automatically dispose&#x2F;unsubscribe in composition scenarios: for instance, if you flatMap from one &quot;underlying&quot; observable to a sequence of observables, when you unsubscribe from the &quot;underlying&quot; observable it will observe any remaining (if any) hot observables that were kicked off by the flatMap.<p>RxJS also automatically disposes resources when an observable <i>completes</i> and maybe that&#x27;s a part of what you are missing in the observable lifecycle and part of why you&#x27;ve felt that RxJS has an equivalent of &quot;manual memory management&quot;?<p>Yes, lots of streams are effectively infinite in nature, but that doesn&#x27;t mean that all of them are, and a completion signal can still be useful and informative, including in lifecycle management. (It also helps keep the duality between Enumerable&#x2F;Iterator worlds and Observable&#x2F;Observer worlds.)<p>One obvious case that I see a lot in applications where finite streams&#x2F;observables show up in great number is that Promise (Task&#x2F;Future) is essentially an observable that produces one result and completes.