docs: def read(self):
          "Wait for and read data being streamed from the daemon."
          if self.verbose > 1:
              sys.stderr.write("poll: reading from daemon...\n")
          eol = self.linebuffer.find('\n')
          if eol == -1:
              frag = self.sock.recv(4096)
              self.linebuffer += frag
              if self.verbose > 1:
                  sys.stderr.write("poll: read complete.\n")
              if not self.linebuffer:
                  if self.verbose > 1:
                      sys.stderr.write("poll: returning -1.\n")
                  # Read failed
                  return -1
              eol = self.linebuffer.find('\n')
              if eol == -1:
                  if self.verbose > 1:
                      sys.stderr.write("poll: returning 0.\n")
                  # Read succeeded, but only got a fragment
                  return 0
          else:
              if self.verbose > 1:
                  sys.stderr.write("poll: fetching from buffer.\n")
  
          # We got a line
          eol += 1
          self.response = self.linebuffer[:eol]
          self.linebuffer = self.linebuffer[eol:]
  
          # Can happen if daemon terminates while we're reading.
          if not self.response:
              return -1
          if self.verbose:
              sys.stderr.write("poll: data is %s\n" % repr(self.response))
          self.received = time.time()
          # We got a \n-terminated line
          return len(self.response)