when coro foo calls (or, precisely speeaking, awaits) bar, and bar awaits bob, the coro frame is allocated in foo, bar, bob order, and when their job done, the deallocating happens just in "reverse" order.
it works much like stacks, just with "final await to continuation ", not "ret".
logically speaking, it is a stack.
so, how about implementing promise type allocation with a stack like allocator ? And this allocator shall be "shared" with coroutines on the "same" call chain, aka, "a coperative user mode thread".