Currently worlds do not have the ability to check when persistence data fails to load or if there is any persistence data to load at all.
OnPlayerRestored
seems to only run when there is persistence data to load and only after all network objects have performed their checks for that player.
2 Suggestions:
  1. Create a new
    OnPlayerRestoreStatusUpdate
    event with a status parameter.
This would tell the world the current state of the scene's (or better the object's) status for the Player Data Restoration process:
Awaiting
,
Success
,
Failed
, &
NoDataToRestore
.
  1. Or Add a similar parameter to
    OnPlayerRestored
    to indicate a general status for the whole scene.
*
Awaiting
- Not all data has not been received from the server for the scene or object. The world knows to wait until a further update before doing anything related to persistence.
*
Success
- All data was successfully restored from the server for the scene or object without any exceptions from VRChat's side.
*
Failed
- Data restoration encountered an error on VRChat's side and data in the scene or on the object should not be manipulated for data loss. The world can present an error message and/or allow the player to clear their data.
*
NoDataToRestore
- There was no data to restore from the server for the whole scene or object, this is a new player or a player who recently deleted their data.
This would be extremely helpful at preventing future data loss with networking issues from errors from either the Creator or VRChat. Such as when Network IDs are lost due to a regeneration with the Network ID Utility. Or when VRChat makes a breaking network patch that fails to load certain types of data correctly.