text: Title: ASGI: iterating over `req.stream` hangs for chunked requests
  Body: When reading a streaming request without `Content-Length` (i.e., using "chunked" `Transfer-Encoding`), iterating over `req.stream` hangs in the case the request payload consists of more than one chunk.
  
  It looks like this is caused by the receive loop implementation in `asgi/stream.py`. It only checks for the number of remaining bytes, and disregards the `more_body: False` hint in the case of an empty body. The logic to account for it is in place, but it is not reached due to the `continue` clause for an empty body chunk in the following event sequence:
  ```
  RECV {'type': 'http.request', 'body': b'123456789abcdef\n', 'more_body': True}
  
  RECV {'type': 'http.request', 'body': b'123456789abcdef\n', 'more_body': True}
  
  RECV {'type': 'http.request', 'body': b'', 'more_body': False}
  ```
  
  Eventually, the client (I was using `httpx`) times out, and an `http.disconnect` event is received which is handled correctly. But the request has already failed (timeout) from the client's perspective at this point.