Standardize callback and cleanup code.

That would not work for the callbacks to return an error, and I would need to be checking for the errors listeners every time and removing them.

That is why I emit the same event with the err param to pass along to the callback, so we always listen once for that event, then it is automatically removed.