Add a way for Stream objects to indicate that the end of the stream has been reached
Certain stream types can end - obviously not Serial, but those derived from Client, plus the File objects in SD. File gets round the problem by returning an available of 0, but that doesn't work for the Client-derives classes as they might be waiting for more data to arrive over the network.
There was some discussion about this when I submitted the pull request to add the HttpClient library, which includes endOfStream() and completed() methods which are synonyms for checking that. So the easiest option would be for one (or both) of those method names to migrate up the class hierarchy to Stream.
The lack of this method is most visible when using the Stream::findX methods with the Ethernet or WiFi classes. Because you want a reasonable timeout on the Stream to allow for the network delays, and because when it reaches the end of the stream the only way for the timedRead in Stream to exit is to wait until it times out, you get a long delay at the end of reading your web page (or whatever you've downloaded). With an endOfStream or completed method on Stream, the timedRead and timedPeek methods could use that to check whether they should continue waiting or fail immediately.