pub async fn cleanup_on_exit<T>( main_process: impl Future<Output = Result<T>>, task_group: TaskGroup, ) -> Result<Option<T>>