The flask, aio and bottle engines are hardcoded and mixed within the code -- better they be separated as a plugin dependency. Doing this will also clarify what needs to be done if one wants to provide their own engine.
Once we have a clear definition of what the common "pluggable engine" should be, we can consider making a FastAPI engine as a validation exercise (also, because it's a very popular option at the moment (does a lot of boilerplate reduction and is apparently async and very fast).