docs: def shutdown(self, join=True, timeout=None):
          """
          Clean shutdown of the node.
          :param join: optionally wait for the process to end (default : True)
          :return: None
          """
          if self.is_alive():  # check if process started
              print("Shutdown initiated")
              self.exit.set()
              if join:
                  self.join(timeout=timeout)
                  # TODO : timeout before forcing terminate (SIGTERM)
  
          exitcode = self._process.exitcode if self._process else None  # we return None if the process was never started
          return exitcode