It seems (correct me if I'm wrong) that there are some classes or services that must be used in relevant cases in Drupal 9 that are not present in Drupal 8.
For example, New in Symfony 4.3: Simpler event dispatching
Symfony\Component\HttpKernel\Event\RequestEvent in place of
Same with temporary session storage and more.
This means that if these features are used in a module, the module can only be compatible with one of these core versions; but it seems like a complete waste to manage two codebases at this point, since the versions are still very similar.
What is the correct way to manage this compatibility in one module, and has this question been addressed by the Drupal 9 release team?