title: Await call causing unexpected behavior on instance attribute
body: <p>I am having some trouble to figure out why uncommenting the <code>await asyncio.sleep(1)</code> causes <code>Test</code> to be printed 10 times. It seems that the initialization of <code>val</code> attribute is failing when using async. </p>
  
  <p>Shouldn't the initialization be respected and print only once, as it is the same instance. How can address this behavior when <code>awaitable</code> calls are present?</p>
  
  <pre><code>class TestAsync:
  
      def __init__(self):
          self.val = None
  
      async def some_fun(self):
          if not self.val:
              # await asyncio.sleep(1)  # Magic line
              print('Test')
              self.val = 10
  
  async def main(loop):
      a = TestAsync()
      tasks = [a.some_fun() for _ in range(10)]
      return await asyncio.gather(*tasks)
  
  if __name__ == '__main__':
      cur_loop = asyncio.get_event_loop()
      cur_loop.run_until_complete(main(cur_loop))
  </code></pre>