title: asyncio gather scheduling order guarantee
body: <p>Is it guaranteed that coroutines that are arguments to <code>asyncio.gather</code> will 
  be scheduled with order preserved? Consider following example:</p>
  
  <pre><code>import asyncio
  
  async def coro(i):
      print('{i} finished'.format(i=i))
  
  async def main():
      await asyncio.gather(
              coro(0),
              coro(1),
              coro(2),
              coro(3),
              coro(4),
      )
  
  loop = asyncio.get_event_loop()
  loop.run_until_complete(main())
  </code></pre>
  
  <p>and the result:</p>
  
  <pre><code>0 finished
  1 finished
  2 finished
  3 finished
  4 finished
  </code></pre>