In a lot of places, PinnedBoxedFuture has been used. This is a workaround to Rust not allowing futures (and thus trait objects implementing async methods) to be object-safe. This trait is worth looking into to improve the current solution.
https://crates.io/crates/async-trait