title: Is there any reason to use Python's generator-based coroutines over async/await?
body: <p>Despite its well-known "one way to do it" philosophy, Python (as of version 3.5) supports two ways of writing coroutines:</p>
  
  <ol>
  <li><a href="https://www.python.org/dev/peps/pep-0342/" rel="nofollow">enhanced generators</a> (perhaps with <a href="https://www.python.org/dev/peps/pep-0380/" rel="nofollow"><code>yield from</code></a>)</li>
  <li><a href="https://www.python.org/dev/peps/pep-0492/" rel="nofollow"><code>async</code> and <code>await</code></a>.</li>
  </ol>
  
  <p>Assume we only need to support versions of Python >= 3.5. Is it ever necessary to use the older, generator-based coroutines? Or do <code>async</code>/<code>await</code>-based coroutines completely replace generator-based ones?</p>