pub fn set_spawn_async_hook(
		&self,
		fun: impl (Fn(
				&mut TokioCommandWrap,
				&JobTaskContext<'_>,
			) -> Box<dyn Future<Output = ()> + Send + Sync>)
			+ Send
			+ Sync
			+ 'static,
	) -> Ticket {
		self.control(Control::SetAsyncSpawnHook(Arc::new(fun)))
	}
Set the spawn hook (async version).

The hook will be called once per process spawned, before the process is spawned. It's given
a mutable reference to the [`process_wrap::tokio::TokioCommandWrap`] and some context; it
can modify or further [wrap](process_wrap) the command as it sees fit.

A gotcha when using this method is that the future returned by the function can live longer
than the references it was given, so you can't bring the command or context into the async
block and instead must clone or copy the parts you need beforehand, in the sync portion. See
the documentation for [`run_async`](Job::run_async) for an example.

Fortunately, async spawn hooks should be exceedingly rare: there's very few things to do in
spawn hooks that can't be done in the simpler sync version.
crates/supervisor/src/job/job.rs