If you create the error objects synchronously then the call stack is going to be a lot nicer. Creating error objects in another tick of the event loop makes for a bad stack trace