title: Why do we need `async for` and `async with`?
body: <p>What's the point of introducing <code>async for</code> and <code>async with</code>? I know there are PEPs for these statements, but they are clearly intended for language designers, not average users like me. A high-level rationale supplemented with examples would be greatly appreciated.</p>
  <p>I did some research myself and found <a href="https://stackoverflow.com/a/51177895/5399734">this answer</a>:</p>
  <blockquote>
  <p>The <code>async for</code> and <code>async with</code> statements are needed because you would break the <code>yield from/await</code> chain with the bare <code>for</code> and <code>with</code> statements.</p>
  </blockquote>
  <p>The author didn't give an example of how the chain might be broken though, so I'm still confused. Furthermore, I notice that Python has <code>async for</code> and <code>async with</code>, but not <code>async while</code> and <code>async try ... except</code>. This sounds strange because <code>for</code> and <code>with</code> just syntax sugars for <code>while</code> and <code>try ... except</code> respectively. I mean, wouldn't <code>async</code> versions of the latter statements allow more flexibility, given that they are the building blocks of the former?</p>
  <p>There is <a href="https://stackoverflow.com/a/56162461/5399734">another answer</a> discussing <code>async for</code>, but it only covers what it is <em>not</em> for, and didn't say much about what it is for.</p>
  <p>As a bonus, are <code>async for</code> and <code>async with</code> syntax sugars? If they are, what are their verbose equivalent forms?</p>