title: Await Doesn't Work with Coroutine Assigned to Variable?
body: <p>Why in Python (3.6) does</p>
  
  <pre><code>chunk = await evt_loop.run_in_executor(io_exec, arc.read, chunk_size)
  </code></pre>
  
  <p>work exactly as expected but</p>
  
  <pre><code>read_ftr = evt_loop.run_in_executor(io_exec, arc.read, chunk_size)
  chunk = await read_ftr
  </code></pre>
  
  <p>throws AssertionError("yield from wasn't used with future",) on the second line, and how do I get it to work?</p>
  
  <p>The following is the snippet of code I'm trying to run. Fusing the three read_ftr lines together to get the first single-line implementation works, while the way it is below throws that assertion error at "chunk = await read_ftr".</p>
  
  <pre><code>read_ftr: aio.Future = None
  hash_ftr: aio.Future = None
  chunk = None
  
  with open(arc_path, "rb") as arc:
      while arc_offs &lt; arc_size:
          chunk_size = min(arc_size - arc_offs, max_chunk_size)
  
          if read_ftr:
              chunk = await read_ftr
          read_ftr = evt_loop.run_in_executor(io_exec, arc.read, chunk_size)
          arc_offs += chunk_size
  
          if not chunk:
              continue
  
          if hash_ftr:
              await hash_ftr
          hash_ftr = hasher.async_update(chunk)
  
  if hash_ftr:
      await hash_ftr
  await hasher.async_digest()
  </code></pre>