code: def decode_data_with_length(reader) -> bytes:
      
      length_bytes = yield from read_or_raise(reader, 2)
      bytes_length = unpack("!H", length_bytes)
      data = yield from read_or_raise(reader, bytes_length[0])
      return data
docs: Read data from a reader. Data is prefixed with 2 bytes length
      :param reader: Stream reader
      :return: bytes read from stream (without length)