В node.js само една заявка действително се изпълнява в даден момент (интерпретаторът на Javascript е с една нишка), докато не достигнете до някаква асинхронна операция в собствен код и след това друга заявка започва да се изпълнява, докато другата чака I/O . Ако има някакъв ограничен ресурс, към който се стремят всички заявки, това е просто надпревара коя заявка ще стигне достатъчно далеч през вашия код, за да получи ресурса. Ако клъстерирате вашия сървър за допълнителна мащабируемост, тогава всеки клъстер изпълнява една Javascript нишка.
Ако сте накарали всяка входяща заявка да чака в опашка, докато всички останали заявки, които са дошли преди нея, бъдат напълно изпълнени (нещо, което може да бъде направено), тогава ще разрушите сериозно скалируемостта на вашия node.js сървър и през повечето време ще седи бездействащ в очакване да бъде извършена някаква I/O операция, така че изглежда малко вероятно това да е правилният дизайн.
Обичайната схема тук е просто да оставите първата заявка, която минава, за да изиска ресурса, да го има (въпреки че няколко ресурса може да работят едновременно). Дали това винаги е заявката, която първо е пристигнала на вашия сървър или не, няма да бъде известно, но ще бъде близо и е малко вероятно общността на потребителите да разбере дали е била отклонена с няколко милисекунди само поради разликата в скорост на обработка на две заявки.
Ще трябва да се уверите, че вашият код, който осъществява достъп до споделени ресурси (като бази данни), е безопасен за едновременност и не прави никакви обезпокоителни предположения относно споделени данни.