https://medium.com/@rakia/promise-vs-observable-vs-stream-16...
The big difference is the pull-vs-push scheme, making Observables lazy-by-default, and just subscribed vs unsubscribed to.
Observable is a theoretical concept in reactive programming, popularized by ReactiveX author Eric Meijer.
It's gained quite a bit of popularity because ReactiveX is heavily used in Java frontends and JavaScript (Angular especially).