Problem:
1 - we schedule the request using a callback in a ViewController/ViewModel/Presenter/Whatever
2 - user goes back
3 - ViewController should die, but a reference (the callback) of it is passed to a component with a longer scope (the executor)
4 - Leak/Crash (depends on platform/runtime)
Solution: We must provide a way to cancel requests
From documentation, it seems that generic type declaration is not supported on protocols (interfaces in kotlin) and functions at the moment.
There's an open issue about that on the official kotlin-native repository.