Since the async switch, `kill_process` is a coroutine so you can't just call self.kill_process, you have to yield it.

BTW, with this kind of dead processes, maybe it would be better to send a SIGKILL signal and not to start a complete shutdown process (SIGTERM, wait graceful_timeout, SIGKILL...).

And what about putting this logic into reap_processes method ?