It's intriguing to me that we went to such lengths in the old code so support a variety of things here. 

This doesn't fit well with DI in the new world, because constraints right now have to get services when they handle a request (`HttpContext.RequestServices`). I'm not suggesting a change to this for now, but it's something we might consider improving.