pub async fn process_immediate<'threads, T>(
network: Arc<Mutex<Network<T>>>,
concurrency_limit: Arc<Semaphore>,
worker_pool: &WorkerPool<'threads, T>,
ready_nodes_rx: Receiver<usize>,
child_nodes_rx: Receiver<usize>,
completed_nodes: SharedCompletedNodes,
shared_in_degs: Arc<Mutex<Vec<usize>>>,
total_node_count: usize,
output_tx: Option<Sender<(usize, [Option<Arc<RwLock<T>>>; 4])>>,
checkpoint_cb: Option<Arc<dyn CheckpointCallback>>,
child_nodes_tx: Sender<usize>,
ready_nodes_tx: Sender<usize>,
) -> Result<(), NetworkError>