module Redis::Cluster::CommandLoader

def fetch_command_details(node)

def fetch_command_details(node)
  node.call(%i[command]).map do |reply|
    [reply[0], { arity: reply[1], flags: reply[2], first: reply[3], last: reply[4], step: reply[5] }]
  end.to_h
rescue CannotConnectError, ConnectionError, CommandError
  {} # can retry on another node
end

def load(nodes)

def load(nodes)
  details = {}
  nodes.each do |node|
    details = fetch_command_details(node)
    details.empty? ? next : break
  end
  details
end