Como manipular / enfileirar várias mesmas solicitações http com RxJs?

Estou criando um aplicativo Angular 4. Os componentes estão assinando o Observable. Às vezes, o Observable chama o mesmo URL. Por exemplo, 'atualize o token de acesso', se necessário, antes de qualquer solicitação http. Mas se eu fizer 3 solicitações HTTP diferentes, ele será "atualizado se necessário" 3 vezes o token de atualização.

Então, como fazer apenas um http obter um token de acesso atualizado e fazer com que os outros observáveis 'esperem' pelo primeiro? (Eu sei que 'esperar' não é a boa palavra para observáveis).

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

// E

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))

questionAnswers(2)

yourAnswerToTheQuestion