this is probably done in this fashion because you’re modifying routing which has security implications, might not have a user logged on, or any plugins already loaded, so it makes sense to have a clean object to handle the request separately
modifying routing is kind of a niche thing anyway normal plugins should be going through pluginmethod which allows them to be user-loaded, see imgproxy and many others for an example, i recommend you do that instead
e: a few edits, i guess i mostly forgot how these things work unicode shrug