Handling asynchronous code with callbacks forces us to build an unmanageable stacks of function calls, often leaving us buried beneath them. Is there a better way to handle this? Yes, with Promises. ES6 promises give us an elegant way to handle asynchronous code. We will dive into core of promises, as well how to break apart common Callback Hell scenarios into beautiful method chains.