why:
to allow request.header to contribute to route resolution
how:
add router.precondition((req: Request) => boolean). if returned false then this router will not be used for route resolution at all
another approach may be
router.addRoute((req,res) => {
if(req.header.version == 'v1') return routerV1;
return routerV2;
});