I always thought I know javascript, but the truth is I never know it well enough. This is the series of questions that I used to explain myself the concepts.
Promise
Promise is an object that represents eventual completion or failure of an async function. It has 3 states: pending, fulfilled or rejected.
Closure
Closure is the function that has access to outer function variable even after the outer function finished executing.