Сейчас при написании плагинов для грэдла имеется дикая боль от того, что не понятно какая часть кофигурации в какой момент уже существует, а в какой нет. Например ты не можешь делать плаги, который просто так добавляет зависимости, потому что соурс-сетов в этот момент еще нет. И еще куча всего. На все это есть полтора инструмента в виде afterEvaluate и plugins.withPlugin. Хотя на самом деле процентов 80 всей модели должны быть Deferredами с колбэками
Вот тут очень дельная фраза: в текущей модели конфигурации есть callback'и. Как известно, корутины могут превращать callback-style в последовательный код. Поэтому, да, идея не лишена смысла.
Но withPlugin это, наверное, неподходящий пример, ведь этот callback вызывается из-за действия сторонних сил.
По сути, он эквивалентен if (plugin exists) {...}
А вот afterEvaluate, да, часто используется в духе: мы тут объявим Property (~Deferred) и потом в afterEvaluate callback'е смотрим чем заполнено значение. Но и тут непонятно. Нельзя же переходить в suspended после публикации первого же Property/extension? Получится, что у нас сначала будет код, который 'публикует api', а потом обработка. Неочень-то и похоже на корутины.