This is not a big overhead if you already hold the lock. The locking done outside this method is because everything in the block must be performed atomically. This method is also called from `handleStatusTransitionAttemptEvent` without extra locking because it doesn't require more atomicity.