text: Title: [ASGI] close() not called if iterating over resp.stream raises an exception
  Body: At the time of writing, the `close()` method of [`resp.stream`](https://falcon.readthedocs.io/en/stable/api/request_and_response_asgi.html#falcon.asgi.Response.stream) is only called if the provided generator is successfully exhausted (or yields `None`).
  
  However, the primary use case of the `close()` method is freeing up resources, so one might expect the method to be called regardless. It is also what [PEP 3333 compliant](https://www.python.org/dev/peps/pep-3333/#specification-details) WSGI servers do.
  
  I would suggest introducing a `finally` clause, and moving the invocation of `close()` there.
  
  Make sure to also write proper regression tests:
  >  Kurt Griffiths @kgriffs
  > We also need a test that forces stream to raise an error.
  > (and ensures close() is called)
  