pub async fn main<F1, F2, C1, C2>(pre_config: C1, post_config: C2)where F1: Future<Output = ()>, F2: Future<Output = ()>, C1: FnOnce(Arc<dyn Runtime>) -> F1, C2: FnOnce(Arc<dyn Runtime>) -> F2,