code: async def write(self, chunk: bytes,
                      *, drain: bool=True, LIMIT: int=0x10000) -> None:
          
          if self._on_chunk_sent is not None:
              await self._on_chunk_sent(chunk)
  
          if self._compress is not None:
              chunk = self._compress.compress(chunk)
              if not chunk:
                  return
  
          if self.length is not None:
              chunk_len = len(chunk)
              if self.length >= chunk_len:
                  self.length = self.length - chunk_len
              else:
                  chunk = chunk[:self.length]
                  self.length = 0
                  if not chunk:
                      return
  
          if chunk:
              if self.chunked:
                  chunk_len_pre = ('%x\r\n' % len(chunk)).encode('ascii')
                  chunk = chunk_len_pre + chunk + b'\r\n'
  
              self._write(chunk)
  
              if self.buffer_size > LIMIT and drain:
                  self.buffer_size = 0
                  await self.drain()
docs: Writes chunk of data to a stream.
  
          write_eof() indicates end of stream.
          writer can't be used after write_eof() method being called.
          write() return drain future.