Originally:
This exception occurred for me when I was returning an object with IEnumerable collections in it, and an exception occurred while one of the collection members was being retrieved. At that point, it's too late to catch it in your code, and presumably WCF is designed to disconnect the socket in that case because it's also too late to report an exception to the client, since it has already started streaming results.