DateTime.UtcNow is from at least 30 up to even 117 times faster than DateTime.Now. We have many places in which we compare our date to previous one we set ourselves - in all those places we can (and should) use UtcNow instead of Now.
Local DateTime is still around in some places, those that are user-specific, such as when logging messages.
This is another great idea I thought about - ArchiHandler already receives all packets from Steam Network, so why bother checking if steam client is still alive if we can make use of the time last message arrived, and send request only when needed.
Extra points for performance benefits for accounts receiving lots of packets, so mainly primary ones with lots of friends/groups
Since HttpTimeout started affecting WCF timeout as well, and now I'm about to add yet another responsibility to this, this should be renamed to ConnectionTimeout.
Basically new HeartBeats() are cool, but user should have a direct way to configure the number of failed attempts allowed, as it can differ between stable and unstable networks, same like HttpTimeout.
This change apart from renaming HttpTimeout makes HeartBeats depend on it, allowing ConnectionTimeout / 10 failed attempts, and giving ConnectionTimeout / 30 minutes for steam servers to respond to out connection attempt. Both divisions are rounded up.
This should allow people with less unstable networks to get less clients being abandoned due to steam instability