The way this works is that in this implementation, you essentially have 3 observables. 1. obs 2. the return of "map" 3. the return of "tap" Each containing copies of the data going through them.