So this may be me misunderstanding, but putting the the `.indexShardStateChanged` call outside the mutex in these places looks like you could possibly get state changes out of order. Is there (or should there be) any order guarantee for `.indexShardStateChanged`?