¿Cómo manejar / poner en cola múltiples solicitudes http con RxJs?

Estoy haciendo una aplicación Angular 4. Los componentes están suscribiendo Observable. Algunas veces Observable llama a la misma url. Por ejemplo, 'actualizar Token de acceso' si es necesario antes de cualquier solicitud http. Pero si hago 3 solicitudes http diferentes, se "actualizará si es necesario" 3 veces el token de actualización.

Entonces, ¿cómo hacer que solo un http obtenga un token de acceso actualizado y hacer que los otros observables 'esperen' el primero? (Sé que 'esperar' no es la buena palabra para Observables).

        public get(url: string, options?: RequestOptionsArgs): Observable<Response> {
            return this.getAccessToken().mergeMap(accessToken => {
              return this.http.get(url, options);
            });
          }

// y

this.get('www.myapi.com/one').subscribe(data=>console.log('one',data))
this.get('www.myapi.com/two').subscribe(data=>console.log('two',data))
this.get('www.myapi.com/three').subscribe(data=>console.log('three,data))

Respuestas a la pregunta(2)

Su respuesta a la pregunta