docs: async def _receive_data_chunk(self, chunk):
          """
          Handle a DATA chunk.
          """
          self._sack_needed = True
  
          # mark as received
          if self._mark_received(chunk.tsn):
              return
  
          # find stream
          inbound_stream = self._get_inbound_stream(chunk.stream_id)
  
          # defragment data
          inbound_stream.add_chunk(chunk)
          self._advertised_rwnd -= len(chunk.user_data)
          for message in inbound_stream.pop_messages():
              self._advertised_rwnd += len(message[2])
              await self._receive(*message)