{{ preamble }}std::thread::Builder::new()
        .stack_size(32 * 1024 * 1024)
        .spawn(move || {
            let rt = tokio::runtime::Runtime::new().map_err(|e| e.to_string())?;
            let result = rt.block_on(async { {{ core_call }}.await });
            Ok::<_, String>({{ result_wrap }})
        })
        .map_err(|e| e.to_string())?
        .join()
        .map_err(|_| "thread panicked".to_string())?
