Исправление theNamelessOne, (текущая версия) :
Если возникло исключение или операция выполнилось неуспешно, то вызываем callback с информацией об ошибке (исключение/код ошибки/whatever) в качестве первого аргумента. Только в случае успеха вызываем callback с null в качестве первого параметра, ну и передаём результат через другие параметры, если он есть.
http://fredkschott.com/post/2014/03/understanding-error-first-callbacks-in-no...
Исходная версия theNamelessOne, :
Если возникло исключение или операция выполнилось неуспешно, то вызываем callback с информацией об ошибке (исключение/код ошибки/whatever) в качестве первого аргумента. Только в случае успеха вызываем callback с null в качестве первого параметра, ну и передаём результат через другие параметры, если он есть.