Also worth noting that this article does not explain DataModel:BindToClose()
and a good data system should use it.
Save player data when the game starts to shut down, where each save is wrapped under an individual thread (because you cannot delay your game shutting down) to ensure the safest data.
See here to read about this practice.