The chain router will call all routers one by one until it finds a match. We have routers that have to handle requests that match for the path defined in the slug router (ie. /_locale/something-specific), but should not be handled by the SlugController (they don't exist as real pages in the DB). So that's why we still need to throw the ResourceNotFoundException, which will in fact pass the request on to the next router in the chain (which can handle these "virtual" page views).