I assume the rationale for the setZeroTimeout here is so that oncomplete cannot fire in the same turn of the event loop.  A brief comment to that effect would be useful if so, otherwise the right comment ;)