One very nice thing about TCP is that it has got very robust over the years - I have had a big file copy running, shut down my laptop, got on a train 300 mies and 3 hours to a different office and network protocol, and had the transfer resume transparently to the apps involved.
Long polling is another example of this - because an active TCP session doesn't send packets, but can be torn down, it is very efficient on the network. This was a used in DAAP for the iTunes sharing originally - you connect to the sharer and get a track listing, then send another request which sits open silently. If they add another track, it returns with the new data. If they shut the lid of their powerbook, you get a teardown.
There has been some interesting work on tweaking TCP where you control both endpoints too which lets you rely on everyone else who is expecting it. Rebuilding flow control with UDP needs a lot of care - µTP is the best I've seen so far, but it was fields tested on lots of shonky connections in a hostile environment.