anchor.diff:                   timeout = Cause ->
                        {error, Cause}
                end,
  -    read_and_repair_2(Reply, ReadParameter, []).
  +    read_and_repair_2(RetRPC, ReadParameter, []).
   
   %% @private
   read_and_repair_2({ok, Metadata, #?OBJECT{data = Bin}}, #read_parameter{}, []) ->
       {ok, Metadata, Bin};
  -read_and_repair_2({ok, match} = Reply, #read_parameter{}, []) ->
  +read_and_repair_2({ok, match} = Reply, #read_parameter{},_Redundancies) ->
       Reply;
   read_and_repair_2({ok, Metadata, #?OBJECT{data = Bin}},
                     #read_parameter{quorum = Quorum} = ReadParameter, Redundancies) ->
  
positive.code:                   [#redundant_node{node = Node}|_], Redundancies) when Node == erlang:node() ->
      read_and_repair_2(
        get_fun(AddrId, Key, StartPos, EndPos), ReadParameter, Redundancies);
  read_and_repair_1(#read_parameter{addr_id   = AddrId,
                                    key       = Key,
                                    etag      = ETag,
  
negative.code:                   [#redundant_node{node = Node}|_], Redundancies) when Node == erlang:node() ->
      %% Retrieve an head of object,
      %%     then compare it with requested 'Etag'
      HeadRet =
          case leo_object_storage_api:head({AddrId, Key}) of
              {ok, MetaBin} ->
                  Metadata = binary_to_term(MetaBin),
                  case Metadata#?METADATA.checksum of
                      ETag ->
                          {ok, match};
                      _ ->
                          []
                  end;
              _ ->
                  []
          end,
  
      %% If the result is 'match', then response it,
      %% not the case, retrieve an object by key
      case HeadRet of
          {ok, match} = Reply ->
              Reply;
          _ ->
  