nulify the queuWoker before resolve happends

I experienced a weird bug where queue was never completed. Upon investigating with @cdata, we discovered that the resolve happens synchronously, which allow the observer of the queue to fire before the we null the worker, and potentially leave the worker in an none-null state. 

The PR intents to guarantee the worker is nulled when the queue completes.