Synchronous vs. Asynchronous JavaScript

JavaScript is a single-threaded language, but at the same time, can be made to be non-blocking, asynchronous, and concurrent.