Use shareReplay from Rx.