
I think it's perfectly reasonable to want to perform an action, wait, and then perform another action.
If for some reason you're using Node older than 7 (which reached end of life in 2017), or are targeting old browsers, async/ await can still be used via Babel (a tool that will transpile JavaScript + new features into plain old JavaScript), with the transform-async-to-generator plugin.
and also landed in Firefox Nightly in November 2016. async/ await landed in V8 and has been enabled by default since Chrome 55 (released in Dec 2016). promises are supported in Node v0.12+ and widely supported in browsers, except IE. The async/await feature lets the code explicitly wait for a promise to settle (resolve or reject). We also use arrow functions in the definition of the sleep function. Promises, a native feature of ES2015 (aka ES6). Two new JavaScript features (as of 2017) helped write this "sleep" function: wait, but note that most browsers will not allow it on the browser's main thread. If you do want a blocking construct, see this answer using Atomics. This means it does not block the execution of the rest of the script, which is what you want in the vast majority of the cases. await only pauses the current async function. await can only be executed in functions prefixed with the async keyword, or at the top level of your script in an increasing number of environments. Return new Promise(resolve => setTimeout(resolve, ms))