The third reason, if UnitConfig.customDispatchCheck returns a falsy value.
The fourth reason, if UnitConfig.distinctDispatchCheck is not false and the dispatched value is same as current value.
The first reason, if the Unit is frozen.
The second reason, if the dispatched value is invalid.
All the reasons for why a Unit dispatch might fail.