code: def get_chunks(self, new_data_bytes):
          
          self._buf += new_data_bytes
  
          while True:
  
              buf_decoded = _best_effort_decode(self._buf)
              buf_utf16 = buf_decoded.encode('utf-16')[2:]
  
              length_str_match = LEN_REGEX.match(buf_decoded)
              if length_str_match is None:
                  break
              else:
                  length_str = length_str_match.group(1)
                  # Both lengths are in number of bytes in UTF-16 encoding.
                  # The length of the submission:
                  length = int(length_str) * 2
                  # The length of the submission length and newline:
                  length_length = len((length_str + '\n').encode('utf-16')[2:])
                  if len(buf_utf16) - length_length < length:
                      break
  
                  submission = buf_utf16[length_length:length_length + length]
                  yield submission.decode('utf-16')
                  # Drop the length and the submission itself from the beginning
                  # of the buffer.
                  drop_length = (len((length_str + '\n').encode()) +
                                 len(submission.decode('utf-16').encode()))
                  self._buf = self._buf[drop_length:]
docs: Yield chunks generated from received data.
  
          The buffer may not be decodable as UTF-8 if there's a split multi-byte
          character at the end. To handle this, do a "best effort" decode of the
          buffer to decode as much of it as possible.
  
          The length is actually the length of the string as reported by
          JavaScript. JavaScript's string length function returns the number of
          code units in the string, represented in UTF-16. We can emulate this by
          encoding everything in UTF-16 and multiplying the reported length by 2.
  
          Note that when encoding a string in UTF-16, Python will prepend a
          byte-order character, so we need to remove the first two bytes.