docs: def stop(self):
          """Ask politely, first, with SIGINT and SIGQUIT."""
          if hasattr(self, 'process'):
              if self.process is not None:
                  try:
                      is_running = self.process.poll() is None
                  except AttributeError:
                      is_running = False
  
                  if is_running:
                      self.bundle_engine.logline("Stopping {0}".format(self.service.name))
                      self.term_signal_sent = True
  
                      # Politely ask all child processes to die first
                      try:
                          for childproc in psutil.Process(self.process.pid).children(recursive=True):
                              childproc.send_signal(signal.SIGINT)
                      except psutil.NoSuchProcess:
                          pass
                      except AttributeError:
                          pass
  
                      try:
                          self.process.send_signal(self.service.stop_signal)
                      except OSError as e:
                          if e.errno == 3:        # No such process
                              pass
                  else:
                      self.bundle_engine.warnline("{0} stopped prematurely.".format(self.service.name))
              else:
                  self.bundle_engine.warnline("{0} stopped prematurely.".format(self.service.name))
          else:
              self.bundle_engine.warnline("{0} was never successfully started.".format(self.service.name))