Current backend.exchange* methods are all, in a programmatic sense, synchronous.
This could be bothersome when dealing with APDU exchanges, which could arbitrarily need user interactions (navigation in a Ragger/Speculos sense). Currently the way to deal with that is to manage navigation into the APDU exchange loop, which leads to clustered, non-generic, dirty code, or craft a higher-level threading mechanism to allow concurrent execution (on 'thread/coroutine/whatever' dealing with the APDU exchanges, another managing the navigation).
Adding async exchange methods returning futures could ease this process in a cleaner manner.