In the last chapter, we learned how to handle errors in our reactive applications; we saw that, if we do nothing to handle errors on our observables, that they will be propagated, notifying all the observers of that observable and stopping the observable without ever calling the onCompleted() method of the observers. Besides that we learned a set of operators to change this behavior and have more control over errors, as follows:
- catch()
- onErrorResumeNext()
- retry()
- mergeDelayError()
These operators give us more control over when to propagate the error and what to do in the event of an error.
Another really important lesson from the last chapter was the implementation of tests for programs using functional reactive programming, as on this paradigm we are always using asynchronous computation and our test needs to be ready to support this behavior.
The nature of functional reactive programming...