I understand the core concepts of Observable data services, but am running into trouble when I need a bit more robust service.
For a user query I have to make a chain of http calls such that, the user object is queried first and then additional data is queried after grabbing the user object. Since these extra calls depend upon the grabbed user object. With subscribers receiving the entire user object with any extra data it was able to grab.
I'm currently using userSource.mergeMap(user => extraDataNeeded(user)) to return the combined Observables.
Where extraDataNeeded returns Observable.forkJoin(...OBSERVABLES)
OBSERVABLES being an array of http calls that add extra data to the user object.
My issue is that when one of these extra http calls fails, the rest in the chain are cancelled. I'd like for the highest order observable created from userSource.mergeMap(user => extraDataNeeded(user)) to make all http calls irregardless if one fails. I'd like the subscribers of userSource.mergeMap(user => extraDataNeeded(user)) to receive the user object with whatever data it was able to grab, and any errors for whichever inner http calls failed. And fail entirely with no success response if the original userSource fails.