It is executed by your runtime which may or may not behind the scenes be using a single thread for your execution and/or the underlying I/O/eventing going on underneath, no?
Most JS runtimes are multi-threaded behind the scenes. If you start a node process:
node -e "setTimeout(()=>{}, 10_000)" &
Then wait a second and run:
ps -o thcount $!
Or on macOS:
ps -M $!
You'll see that there are multiple threads running, but like others have said, it's completely opaque to you as a programmer. It's basically just an implementation detail.
If you need true parallelism of course you can opt-in to Web Workers (called Worker Threads in Node), or the Node-specific child_process.fork, or cluster module.