I agree, having 2 timeouts makes sense. Why not changing socket::Read by adding this second timeout with a default of 100ms. This should not have any negative impact on the other clients. They even benefit from correcting the error in the read method.