It's just that a pure coincidence fell on this question, looking for something else.
In fact, this.async overwritten for each method during the run phase to delay execution until it completes or starts synchronously.
Here you can read the corresponding line of code: https://github.com/yeoman/generator/blob/master/lib/base.js#L372-L393
So basically, behind the scenes, Joiman always calls a callback. When you call this.async() , we save the reference variable and return the callback. If you do not name it, we will take care of calling the callback manually after the function finishes.
source share