Node.js is concurrent - you can have multiple paths of execution at the same time. It's just that Node.js concurrency has non-preemptive context switch at well defined points - function boundary, thus no need for lock, whereas preemptive concurrency can context switch at any point and thus needs lock.
There are multiple paths of execution your code but they are never running concurrently. Only the underlying I/O is really executing concurrently with your code.