use progress.nextTick to reduce the callback stack's depth.