To be slightly more clear on the issue...

Given a stream returned from a listen, after a bit of handshaking:

dataavailablefor_read seems to always return false
read() blocks and work as expected, but does not return on remote disconnect (just keeps waiting)
stream.connected seems to always return true