I see a few problems with this implementation:

1. The spec says (RFC2616 14.26) that, if the `If-None-Match` tags match, the server "MUST NOT perform the requested method". However, we are unconditionally calling our inner route here, which will *always* perform the requested method. This means that we'll potentially execute PUTs (etc.) when we are not allowed to!

2. That same spec paragraph also mandates that, in certain cases, "the server MUST respond with a status of 412 (Precondition Failed)", which we are not doing anywhere here.

3. It seems to me that we are combining two only loosely connected things into one single directive: `If-Modified-Since` support and `If-None-Match` support. I think we should split them apart into two separate directives. I also like Age's idea of naming the directives similar to their headers, so maybe `withIfModifiedSinceSupport` / `withIfNoneMatchSupport`. Just calling them `ifModifiedSince` kind of implies that its inner route is only executed in some cases, which it isn't. We'll *always* have to execute the inner route, maybe even several times.
With the basic directives in place we can still think about adding higher level directives which then combine the more basic ones in some form.

Also: If we add `withIfNoneMatchSupport` we should probably also add `withIfMatchSupport`, no?