Observando encadeamento em RxJS

Estou aprendendo RxJS e Angular 2. Digamos que tenho uma cadeia de promessas com várias chamadas de funções assíncronas, que dependem do resultado anterior, que se parece com:

var promiseChain = new Promise((resolve, reject) => {
  setTimeout(() => {
    resolve(1);
  }, 1000);
}).then((result) => {
  console.log(result);

  return new Promise((resolve, reject) => {
    setTimeout(() => {
      resolve(result + 2);
    }, 1000);
  });
}).then((result) => {
  console.log(result);

  return new Promise((resolve, reject) => {
      setTimeout(() => {
      resolve(result + 3);
        }, 1000);
  });
});

promiseChain.then((finalResult) => {
  console.log(finalResult);
});

Minhas tentativas de fazer o mesmo usando o RxJS sem o uso de promessas produziram o seguinte:

var observableChain = Observable.create((observer) => {
  setTimeout(() => {
    observer.next(1);
    observer.complete();
  }, 1000);
}).flatMap((result) => {
  console.log(result);

  return Observable.create((observer) => {
    setTimeout(() => {
      observer.next(result + 2);
      observer.complete()
    }, 1000);
  });
}).flatMap((result) => {
  console.log(result);

  return Observable.create((observer) => {
    setTimeout(() => {
      observer.next(result + 3);
      observer.complete()
    }, 1000);
  });
});

observableChain.subscribe((finalResult) => {
  console.log(finalResult);
});

Produz a mesma produção que a cadeia de promessas. Minhas perguntas são

Estou fazendo isso certo? Existem melhorias relacionadas ao RxJS que posso fazer no código acima

Como faço para que essa cadeia observável seja executada repetidamente? ou seja, adicionar outra assinatura no final produz apenas 6 adicionais, embora eu espere imprimir 1, 3 e 6.

observableChain.subscribe ((finalResult) => {console.log (finalResult);});

observableChain.subscribe ((finalResult) => {console.log (finalResult);});

1 3 6 6

questionAnswers(1)

yourAnswerToTheQuestion