i spawn a thread for a tokio runtime and give the host language a handle using uniffi. it can call sync functions or poll async functions using its async runtime, but tokio isn't available
usually i've used channels to pass msgs, but to spawn a task directly, stashing the tokio handle worked nicely