I\'m going to be trying to give a talk on async-await and I\'m creating a flow chart that attempts to show the possible orders of execution.
This
is vague and seems not correct.
What happens next inside the async method is not dependent on the caller. The method now is an independent agent (like a thread) that runs on its own. It has returned a Task that is a handle to itself. The caller can do with that task as he pleases (e.g. wait for it, await it, ...).
But if the caller simply drops that Task, the async methods keeps running.
The "re-enter" part of your picture happens at a time controlled by the awaited awaitable. Often, this is some external event such as a completed IO or a timer. The async method now resumes execution not knowing or caring who re-activated it.
Think of each async method as an independent thread. Each await logically is a Thread.Join().