code: def next(self):
          
          # Using binary mode, because some encodings such as "utf-8" use variable number of
          # bytes to encode different Unicode points.
          # Without using binary mode, we would probably need to understand each encoding more
          # and do the seek operations to find the proper boundary before issuing read
          if self.closed:
              raise StopIteration
          if self.__buf.has_returned_every_line():
              self.close()
              raise StopIteration
          self.__buf.read_until_yieldable()
          r = self.__buf.return_line()
          return r.decode(self.encoding)
docs: Returns unicode string from the last line until the beginning of file.
  
          Gets exhausted if::
  
              * already reached the beginning of the file on previous iteration
              * the file got closed
  
          When it gets exhausted, it closes the file handler.