Introduction
Observable and Promise both provide us with abstractions that help us deal with the asynchronous nature of applications.
Promise
Promises work with asynchronous operations. They either return a single value (i.e the promise resolves) or an error message (i.e the promise rejects).