probably need to check this after every lock in this process, unlike handlePossibleShardedMessage