Experiment #1: Can JavaScript run something like a concurrent thread/process? No.
So, I know it is stated frequently that JavaScript is "a single-threaded" language. But it is non-blocking thanks to Web APIs.  However, I was thinking whether it means that we can run something concurrently like in some other languages like Java, Go, or Python. I mean ES6 includes Promises and it was enhanced by async-await. So, is it possible to make use of Promises to run multiple things in the same time?  It was fairly a simple experiment. All you need is   A function that acts as a Promise (an async function),  A method that will be run as a Promise and as a synchronous function, and  A "container" function that holds both async function and plain function.   With that three method in mind, this is the code that I came up with.  function  timelapse ( id ) {   for  ( let  i = 1 ; i <= 1 _000_000; i++) {     if  (i % 500 _000 === 0 ) {             console .log( ` ${ new  Date ().getTime()}  ${id} ` );         }   } }  async  function  asyncFunction ( id ) {   ...