Calling from the constructor passing `this` in would mean exposing an object that's not fully initialized (`InternalIndexShard`). The constructor gets invoked by the above `shardInjector.getInstance(IndexShard.class);` if I'm correct, thus I think it's better to keep the listener call right after it.