fixed an issue that could have caused callback to be invoked multiple times, now passing errors more node-like