Allow the controller to override the asset_host

Could you elaborate a bit more on these requirements?

The second parameter passed into the call() method of the asset host is the request object. In theory it should be possible to make any decision the controller can make. I would personally think it makes most sense to keep the logic of which asset host to use encapsulated in that single place.

Do you have the situation where different routes have different CDNs? Or is it simply different environments? In my project, we have a YML file with the CDN url for the environment (using %d as a placeholder for the actual asset host).

It may also be interesting for you to note that the generated assets (SCSS) will have absolute paths to images if you are using the image helpers. This also makes it significantly more difficult to have different CDN per route, especially if some CDN is not available to some route.