Le promesse sono spesso utilizzate per affrontare i problemi con i callback. Concettualmente le promesse sono future, quindi si applicano i problemi con i futures citati nel link introduttivo reactiveX fornito da Robert Harvey.
Le promesse concettuali sono un sottoinsieme di osservabili. Promise è un valore che si risolverà in modo asincrono. L'esempio più tipico sono le richieste http. Gli osservabili riguardano la sequenza di eventi asincroni. Questi eventi potrebbero essere posizioni del mouse, clic, input dell'utente ecc. Quindi si potrebbe dire che gli osservabili sono un'astrazione più ricca e complessa per gestire l'asincronicità.
Quindi, chiamare osservabili come promesse + metodi di supporto è una semplificazione eccessiva. La risposta alla tua domanda dipende dalla necessità di gestire una sequenza di eventi o se puoi vivere con asincronismo "semplice". Librerie come RxJS o Bacon o Kefir aggiungi complessità, quindi ti consigliamo di aggiungerli solo se necessario.