code: def parse_buf(self, encoding="unicode"):
          
          buf_len = len(self.buf)
          replies = []
          reply = b""
          chop = 0
          skip = 0
          i = 0
          buf_len = len(self.buf)
          for i in range(0, buf_len):
              ch = self.buf[i:i + 1]
              if skip:
                  skip -= 1
                  i += 1
                  continue
  
              nxt = i + 1
              if nxt < buf_len:
                  if ch == b"\r" and self.buf[nxt:nxt + 1] == b"\n":
  
                      # Append new reply.
                      if reply != b"":
                          if encoding == "unicode":
                              replies.append(encode_str(reply, encoding))
                          else:
                              replies.append(reply)
                          reply = b""
  
                      # Truncate the whole buf if chop is out of bounds.
                      chop = nxt + 1
                      skip = 1
                      i += 1
                      continue
  
              reply += ch
              i += 1
  
          # Truncate buf.
          if chop:
              self.buf = self.buf[chop:]
  
          return replies
docs: Since TCP is a stream-orientated protocol, responses aren't guaranteed
          to be complete when they arrive. The buffer stores all the data and
          this function splits the data into replies based on the new line
          delimiter.