don't promisify internal commands like __addToChain
execute response method on next tick to prevent loosing error
the call command is now async to since we are using promises
handle promise rejections properly
n order to prevent a clean order of callback/promise execution we need to resolve the promise in the same event loop as the callback execution.