According to the javadoc for the close() method in the CacheCallback interface CacheCallback (GemFire Java API Documentation):
"It is possible for this method to be called multiple times on a single callback instance, so implementations must be tolerant of this."
It looks like this is what is happening here and there are not multiple instances of AsyncEventListener being created.