in ajax('url', callback) inversion of control happens, what if instead of a third party calling your callback function,
there was a way that the third party can tell you when the async operation (its task) is finished and your program decides to
what to do next? that's the idea behind promises and async await
suppose I order a cheeseburger and the cashier promises me to get it after a while (that we don't know exactly when);
- the cashier gives me a receipt, I hold on to the receipt and in the meantime I text my friend (pending state of promise)