Здравствуйте, gandjustas, Вы писали:
V>>Каждая асинхронная операция имеет возможность завершится конкурентно с другой, если реактор у нас работает, например, на пуле потоков поверх IOCP. Поэтому, прежде чем делать что-то асинхронно, в первую очередь необходимо выяснить потоковую модель такой асинхронности.
G>Завершаться может когда угодно, а коллбеки в JS вызываются строго последовательно. Если же ты попробуешь иницииоровать две асинхронные операции с одним ресурсом в одно время, о получишь или ошибку или одна выполнится после другой. Так что состояние гонки в js ты не получишь никаким образом.

Господи, "одна выполнится после другой" и дает те самые гонки, поскольку порядок выполнения недетерминирован.
V>>В одном потоке в node.js только твой JS-код выполняется, а сам-то node.js многопоточный, у него вся работа по вводу-выводу выполняется в других потоках.
G>Нет. Никакой ввод-вывод в других потоках не исполняется. Есть один поток выполнения, все хендлы принадлежат ему, весь ввод вывод инициируется в нем, все коллбеки выполняются тоже в нем.

Весь ввод-вывод выполняется в других потоках. JS-поток только шедулит вызов и принимает результат чз эвентлуп.
Вы ребята похоже один другого стоите.