The endInsertRows() call triggers the main calls to get_data_for_role(): in the current order, the try/except goes to the exception every time In the updated order, it doesn't do it ever We have full control over what's in the cache, and we always fully populate it, so we can get rid of the fallback