def METHOD_NAME(self) -> ModuleProperties | str | None:
    """Get value from the queue.
    Return the value read from the queue, or None if the process unexpectedly died.
    """
    max_iter = 600
    n = 0
    while True:
        if n == max_iter:
            raise RuntimeError("Timeout waiting for subprocess")
        try:
            return self.results.get(timeout=0.05)
        except queue.Empty:
            if not self.proc.is_alive():
                return None
        n += 1