anchor.diff:                                 "(vb: ~p, status code: ~p, error: ~p)",
                                  [VBucket, OtherResponse, mc_client_binary:map_status(OtherResponse)])};
   
  -              %% if timeout, treat it as error
  +              %% if timeout when fetching remote metadata, treat it as local wins and just send the doc
                 {error, timeout} ->
  -                  {memcached_error, ?format_msg("remote memcached timeout at sock: ~p, vb: ~p",
  +                  {timeout, ?format_msg("remote memcached timeout when retrieving metadata at sock: ~p, vb: ~p",
                                                   [Sock, VBucket])}
             end,
   
  
positive.code:                     {ok, RemoteFullMeta, RemoteCAS};
                  {ok, key_enoent, RemoteCAS} ->
                      {key_enoent, "key does not exist at remote", RemoteCAS};
                  {memcached_error, ErrorMsg} ->
                      {error, ErrorMsg}
              end,
  
negative.code:                 %% for some reason we can only return one error. Thus
                  %% we're logging everything else here
                  ?xdcr_error("out of ~p docs, succ to send ~p docs, fail to send others "
                              "(by error type, enoent: ~p, not-my-vb: ~p, einval: ~p, timeout: ~p "
                              "other errors: ~p",
                              [DocsListSize, (Flushed + Eexist), Enoent, NotMyVb, Einval, Timeout, OtherErr]),
  
                  %% stop replicator if too many memacched errors
                  case (Flushed + Eexist + ?XDCR_XMEM_MEMCACHED_ERRORS) > DocsListSize of
                      true ->
                          {reply, {ok, Flushed, Eexist}, State};
                      _ ->
                          ErrorStat = [Flushed, Eexist, Enoent, NotMyVb, Einval, Timeout, OtherErr],
                          {stop, {error, {ErrorStat, ErrorKeys}}, State}
                  end
          end,
      RV;
  
  