A) You can use timer instead of interval to send a request right away but have the same effect: timer( 0 , 1000 ); // which is the same, basically, as: concat(timer( 0 ), interval( 1000 )) B) You'd use share or shareReplay which makes the observable multicast, thus "sharing" it's values with many subscribers. Since it's something happening on an interval, I'd use shareReplay(1) , because that is going to cache the previous value and give it to a new subscriber right away, instead of them having to wait for the next notification. timer( 0 , 100 ).pipe( switchMap( () => this .http.get(url)), shareReplay( 1 ), ) The above approach is what you'd what to do. BTW: I recommend against using IntervalObservable.create , that's more of an implementation thing from the library, instead import { interval } from 'rxjs/observable/interval'; . That will give you a static function to use.