Promises have been an incredible addition to JavaScript; they save us callback hell, make coding async more maintainable, and and allow us to keep track of multiple async processes at a time. Promise.all comes to mind, allowing us to react when multiple promises have been resolved.
Full article