[#design:promise] == Promise The main coroutine type is a `promise`, which is eager. The reason to default to this, is that the compiler can optimize out promises that do not suspend, like this: [source,cpp] ---- cobalt::promise noop() { co_return; } ---- Awaiting the above operation is in theory a noop, but practically speaking, compilers aren't there as of 2023.