{{ preamble }}let result = std::panic::catch_unwind(std::panic::AssertUnwindSafe(|| {
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 }).map_err(|e| e.to_string())?;
Ok({{ result_wrap }})
})
.map_err(|e| e.to_string())?
.join()
.map_err(|_| "thread panicked".to_string())
}));
match result {
Ok(inner_result) => inner_result?,
Err(_) => Err("thread panic during async operation".to_string()),
}