I don’t like the idea of managing subscriptions in the UI layer. It really complicates the code and makes it harder to maintain. How about using RxLifecycle from Trello and managing subscriptions in the ViewModel layer by having a custom lifecycle? And there is something smelly in the Subject approach to cache the request. Isn’t it better to have a repository layer which caches the response instead of having caching in the UI layer?