title: Necessity of closing asyncio event loop explicitly
body: <p><strong>The Story:</strong></p>
  
  <p>I am currently looking through the <a href="https://github.com/python/asyncio/blob/master/examples" rel="noreferrer">asyncio basic examples</a>, in particular <a href="https://github.com/python/asyncio/blob/master/examples/fetch0.py" rel="noreferrer">this one</a> - the simplest possible HTTP client. The main function starts an event loop, runs until the data fetching is complete and closes the event loop:</p>
  
  <pre><code>def main():
      loop = get_event_loop()
      try:
          body = loop.run_until_complete(fetch())
      finally:
          loop.close()
      print(body.decode('latin-1'), end='')
  </code></pre>
  
  <p>But, the code also works if I omit the <code>loop.close()</code>:</p>
  
  <pre><code>def main():
      loop = get_event_loop()
      body = loop.run_until_complete(fetch())
      print(body.decode('latin-1'), end='')
  </code></pre>
  
  <p><strong>The Question:</strong></p>
  
  <p>While there is an example, the question is a generic one - what can potentially go wrong if one would forget to close the asyncio event loop? Is the event loop going to be always implicitly closed?</p>