The command creates a PlanExecutor here, and in order to destroy a PlanExecutor, a collection lock must be held in MODE_IS. If the command exits via an exception while yielded, this will not be true.
For example, if this AutoGetCollectionForReadCommand throws an exception due to interrupt from a step-down, the PlanExecutor will be destroyed without holding a lock.
While being destroyed, the PlanExecutor needs to communicate to the collection's cursor manager that it is being deleted, so doing so without a lock can lead to a race, as described in SERVER-25694.