Looking at the code it seems that a @RequestScoped bean would be destroyed (@PreDestroy called) more than once in an async servlet request.
1) Write a test to confirm this 2) Fix this so that the request context is only invalidated if an async servlet has not been started.