Optional timeout, the default value of Duration.max waits without a timeout.
The function will return true if data becomes available before the timeout is reached. If the connection gets closed, or the timeout gets reached, false is returned instead.
Blocks until data becomes available for read.
The maximum wait time can be customized with the timeout parameter. If there is already data availabe for read, or if the connection is closed, the function will return immediately without blocking.