Вот почему ваш пример не работает:
Первая операция асинхронная, поэтому первое, что выполняется, - это вызов flow.wait.Поскольку flow.add еще не был вызван, он на самом деле не ждет.
Обратите внимание, что ваш работающий пример - правильный способ использования asyncblock.Я работаю над изменением асинхронного блока, которое сделает более естественным асинхронное добавление задач, но в этом примере это не требуется.