Observable, retry on error and cache only if completed
we can use the cache() operator to avoid executing a long task (http request) multiple times, and reuse its result: Observable apiCall = createApiCallObservable().cache(); // notice the .cache() --------------------------------------------- // the first time we need it apiCall.andSomeOtherStuff() .subscribe(subscriberA); --------------------------------------------- //in the future when we need it again apiCall.andSomeDifferentStuff() .subscribe(subscriberB); The first time, the http request is executed, but the second time, since we used the cache() operator, the request won't be executed but