I think I understand the nature of async vs sync. I also understand that javascript includes certain async functions, such as setTimeout, that are able to function because they use a Web API of some sort. I also understand that you are able to make promises using external libraries such as bluebird. This all makes sense.
However, if Promises are async, and ES6 includes primitive Promise objects, then how is that possible if JS is single threaded?
I suppose that either: 1. JS is not purely single-threaded 2. Promises are not async 3. Primitive Promises use a Web API (or some sort of API provided by the environment)
Or none of the 3 above? Appreciate a detailed explanation.