Two issues here: - Evaluated object data is to only be updated for selection only after modifier stack is done its job. Otherwise it's possible to have selection batch update called on an input data, at the same time as original object data is being evaluated. - If object's modifier stack did not create its own evaluated mesh (in case when there is no effective modifiers, for example) can not update selection on object's data, as it might cause threading issues between objects sharing same data.