They do need a millis() based timeout so that data left in the buffer after the socket closes can still be read in but the maintain doesn't sit and wait forever.