RxJS v7: Timing of side-effects when recovering a stream with catchError
Goal Determine the exact order in which side‑effect operators execute when an Observable throws an error and catchError supplies a fallback stream. Constraints The source Observable emits a sequence, then errors. A tap operator is attached to the source to log or update state. The fallback provided by catchError also contains a tap to record recovery events.