Hi Ken - I think it is good practice to make a function that has an expected async signature to always be async in nature, even if you can short circuit and call the callback in the current chain of execution. 

It depends on how you write your library, but the caller might not expect the callback to execute in the current calling context: http://markdawson.tumblr.com/post/43705616205/honour-thy-async-signature I think it is just clean to always make callbacks truly async and consistent.