# Await/Async, part deux

**URL:** <https://forums.swift.org/t/await-async-part-deux/37491>\
**Category:** Pitches\
**Created:** [June 12, 2020, 4:37am UTC](https://forums.swift.org/t/await-async-part-deux/37491 "2020-06-12T04:37:43Z")\
**Posts on this page:** 1\
**Showing post:** 11

<div class="post-metadata">

**Author:** ![pyrtsa](https://sea2.discourse-cdn.com/swift/user_avatar/forums.swift.org/pyrtsa/32/740_2.png) [@pyrtsa](https://forums.swift.org/u/pyrtsa)\
**Post date:** [June 12, 2020, 9:54am UTC](https://forums.swift.org/t/await-async-part-deux/37491/11 "2020-06-12T09:54:40Z")

</div>

> [@QuinceyMorris](#):
>
> Waiting (as `await` does in `A1` ) _ **must not block** _ the thread it’s running on. It only blocks its own path of execution.

I can't make sense of this. If `await` in `A1` (or what I and apparently several others have referred to as `await!` without but a handwaving definition) – if that `await` would not block its thread of execution then where would that thread continue running on? Say the main thread gets "parked" to wait for a non-async function call an async function, where's the continuation point to jump to, and what makes the main thread jump back to this function when it's ready to resume?

For `func A2 async` I can see how an executor system partly in the language, partly in its stdlib, could turn those into running code with cooperative switching, but `A1` is supposed to act as an ordinary function.

---

_[View the full topic](https://forums.swift.org/t/await-async-part-deux/37491)._
