The facescontext is available when you make a request and not in Asynchronous methods. The trick I use is to create the Facesmessage within the asynchronous method and save it in an application scoped ocmponent unitil the user makes a request. At that moment the facescontext is available, you retrieve all messages and add them to the FacesContext.
Yes, you are right, Leo. Looking at your post again, I've noticed that FacesContext is not being used in the asynchronous method. Thanks for your clarification.