def read_with_one_retry(options = nil)
      yield
    rescue Error::SocketError, Error::SocketTimeoutError => e
      retry_message = options && options[:retry_message]
      log_retry(e, message: retry_message)
      yield
    end
def read_with_one_retry(options = nil)
      yield
    rescue Error::SocketError, Error::SocketTimeoutError => e
      retry_message = options && options[:retry_message]
      log_retry(e, message: retry_message)
      yield
    end
Execute a read operation with a single retry on network errors.

 This method is used by the driver for some of the internal housekeeping
 operations. Application-requested reads should use read_with_retry
 rather than this method.

 @api private

 @example Execute the read.
   read_with_one_retry do
     ...
   end

 @note This only retries read operations on socket errors.

 @param [ Hash ] options Options.
 @param [ Proc ] block The block to execute.

 @option options [ String ] :retry_message Message to log when retrying.

 @return [ Result ] The result of the operation.

 @since 2.2.6