because nginx won’t let a worker exit while it still has any non-cancelable timers pending.
Actually, nginx is waiting for that timer stops
When you run nginx -s reload, old workers go into graceful shutdown: they stop accepting new work and then wait until all connections are closed and the timer queue is empty. Since you add a periodic timer in init_process(), the old worker keeps at least one future timer scheduled. Unless that timer fires and your handler returns without re-arming, nginx keeps the worker in “shutting down”.