Caught issue with throwing exceptions when a cb with an error was more appropriate.
Changed order of pre-conditions check on async functions to test for valid cb, throwing an exception if not valid.