Непонятно с async-await в C# - 2
При компиляции требуется складывать и извлекать элементы в/из стека.
При написании методом рекурсивного спуска - никакого выделенного стека нет.
Но есть рекурсивный вызов процедуры, при котором создаются локальные переменные...
Так что, будем говорить что стек не нужен? и ничего что переменные обычно создаются на стеке.
Не знаю, про какой стек вы речь ведёте, просто не так давно я давал ссылку на Эрика Липперта, который сказал в том смысле, чтобы мы, пользователи Сишарпа, не заморачивались, где реально создаются переменные - стек, куча или параллельная реальность, ибо это от нас не сильно зависит, и компилятор сам решает, где что создать. Если много переменных создавать, которые должны быть в стеке, а они туда не помащаются, то их создадут в куче.