add Q npm and add defer functionality to async queue

Have async queue return a promise that will allow for resolving or rejecting the stack effectively halting remain calls in the async stack if any are remaining