docstr: Fetch a new chunk. Returns header information.
docstr_tok: ["Fetch","a","new","chunk",".","Returns","header","information","."]
code: def read(self):
      """Fetch a new chunk. Returns header information."""
      cid = None
  
      if self.queue:
          cid, pos, length = self.queue.pop()
          self.fp.seek(pos)
      else:
          s = self.fp.read(8)
          cid = s[4:]
          pos = self.fp.tell()
          length = i32(s)
  
      if not is_cid(cid):
          if not ImageFile.LOAD_TRUNCATED_IMAGES:
              raise SyntaxError(
                  "broken PNG file (chunk %s)" % repr(cid)
              )
  
      return cid, pos, length
  
imports: import logging
  import re
  import struct
  import zlib
  from .None import Image, ImageFile, ImagePalette
  from ._binary import i8, i16be, i32be, o16be, o32be
  from ._util import py3
label_desc: Use image node_id 2 for calling the ChunkStream obj's underlying member method code with example usage: obj.read() and returns: cid,  pos,  length