The main defference between observable and promises is:
1. observer can emit multiple value, but promise only can work with single value. when promise `reject` or `resolve` they end.
2. promise is **eager** but observer are **lazy**
3. Promise are not cancelable but observable are cancelable
4. Promises are always asynchronous but obervable are possibly asnychronous.
5. Promise are always multicast but Observable are both multicase and unicast
example: