Simple reason is I don't want to receive my own outdated player data.
Take this for example:
1. Player has 100 gold. You add 1 gold using the current value from the player's data and adding 1 to it. You than send out this new data.
2. Shortly after, and before you receive your own packet back, you do it again. Now the value is 102 gold.
3. Now the packet you sent out in #1 arrives back, changing your player data to be 101 gold as that's what was sent out. You've effectively overwritten the latest value at this point.
4. You repeat the process again, adding '1' to the latest data, which because of #3 happens to be 101. You get 102, and send out the data.
5. You get 102 from #2, then 102 again from #4. And yet you performed addition 3 times, so you should have 103!
My current approach where your own data is not echoed back to you avoids this problem. You could add "if (onPlayerSync != null) onPlayerSync(mTcp);" to the end of TNet.GameClient's SyncPlayerData() function, but it seems redundant to do so. You know when your own data is changing. You can already call your callback yourself if you need to.