You can use the ReadTimeout/WriteTimeout properties only if the stream support timing out.
You can check this via the CanTimeout property. If the CanTimeout property returns false all access to these properties should raise an InvalidOperationException.