code: def finish(self) -> None:
          
          if (
              self._expected_content_remaining is not None
              and self._expected_content_remaining != 0
              and not self.stream.closed()
          ):
              self.stream.close()
              raise httputil.HTTPOutputError(
                  "Tried to write %d bytes less than Content-Length"
                  % self._expected_content_remaining
              )
          if self._chunking_output:
              if not self.stream.closed():
                  self._pending_write = self.stream.write(b"0\r\n\r\n")
                  self._pending_write.add_done_callback(self._on_write_complete)
          self._write_finished = True
          # If the app finished the request while we're still reading,
          # divert any remaining data away from the delegate and
          # close the connection when we're done sending our response.
          # Closing the connection is the only way to avoid reading the
          # whole input body.
          if not self._read_finished:
              self._disconnect_on_finish = True
          # No more data is coming, so instruct TCP to send any remaining
          # data immediately instead of waiting for a full packet or ack.
          self.stream.set_nodelay(True)
          if self._pending_write is None:
              self._finish_request(None)
          else:
              future_add_done_callback(self._pending_write, self._finish_request)
docs: Implements `.HTTPConnection.finish`.