docs: def read_to_end(self, record=None):
          """ Read remainder of the stream
          If a digester is included, update it
          with the data read
          """
  
          # no current record to read
          if not self.record:
              return None
  
          # already at end of this record, don't read until it is consumed
          if self.member_info:
              return None
  
          curr_offset = self.offset
  
          while True:
              b = self.record.raw_stream.read(BUFF_SIZE)
              if not b:
                  break
  
          """
          - For compressed files, blank lines are consumed
            since they are part of record length
          - For uncompressed files, blank lines are read later,
            and not included in the record length
          """
          #if self.reader.decompressor:
          self.next_line, empty_size = self._consume_blanklines()
  
          self.offset = self.fh.tell() - self.reader.rem_length()
          #if self.offset < 0:
          #    raise Exception('Not Gzipped Properly')
  
          if self.next_line:
              self.offset -= len(self.next_line)
  
          length = self.offset - curr_offset
  
          if not self.reader.decompressor:
              length -= empty_size
  
          self.member_info = (curr_offset, length)