updated decision to attempt serving from the cache to use a Predicate
changed asynchronous responses to use AsyncContext.start(Runnable) so a new threadpoll isn't created