how expensive is this? it is happening on every request. could we just store state in this listener when we matched in onKernelRequest? or is that dangerous?