Ответ 1
По соглашению в node первый аргумент обратного вызова обычно используется для указания ошибки. Если это что-то другое, кроме null
, операция по какой-то причине была неудачной - возможно, что-то, что вызываемый не может восстановить, но что вызывающий может восстановить. Любые другие аргументы после первого используются как возвращаемые значения из операции (сообщения об успешности, поиск и т.д.).
Это чисто по соглашению, и нет ничего, что помешало бы вам написать функцию, которая успешно проходит в качестве первого аргумента для обратного вызова. Если вы планируете написать библиотеку, принятую другими пользователями node, вы, вероятно, захотите придерживаться соглашения, если у вас нет оснований для этого.