Так и не понял что тебе не ясно. Да и щас такие делают вот так:
async function myFoo (val) {
if (val > 1) {
val = await myFoo(val - 1)
}
return request('http://some.url/?v=' + val)
}
async function myBar () {
let r1 = await myFoo(5)
console.log( 'r1', r1 )
}
myBar()
Просто вначале появились промисы и генераторы, и потом уже асинк/авейт и приходилось извращаться на генераторах, чтобы воспроизвести. Щас генераторы бесполезны и никто их не использует. Например я делаю что либо на генераторах, только в том случае если в других языках это тоже делается на генераторах и в команде есть фулстеки, чтобы им было проще понять что происходит.
А что касается рекурсии, то еще до промисов последовательные вызовы через аякс делали через рекурсии, полагаю за этим в книге пример рекурсии.
Шо то я эту книгу глянул, зря ты ее читаешь, она устарела сильно.