Gui::update should be able to submit futures to an async runtime
Something like this would be ideal:
fn update(&self, m: Self::Message) -> impl Iterator<Item = impl Future<Output = Self::Message>>
This way, zero, one, or more futures can be spawned if necessary. When the futures complete, their output will simply be fed back into the update
function so the component can process those values when they become ready.