Worse: you conflate a form of non-standard "non-error" flow into the error flow position... this should at least be `callback(null)` or just `callback()` if there really is no sensible result value for the caller.

Furthermore, you have a glimmer of "non-error" handling in the middle of error handling.  In general, your flow should be to perform all error checks, and short-circuit out, falling through if all checks pass.  This allows you to better change the code, think of edge cases, and generally scales better.