anchor.diff:  do_get_block(ReplyPid, _Bucket, _Key, _ClusterID, _UseProxyGet, _ProxyActive,
                UUID, BlockNumber, _RcPid, MaxRetries, ErrorReasons)
     when is_list(ErrorReasons) andalso length(ErrorReasons) > MaxRetries ->
  -    Sorry = {error, hd(ErrorReasons)},
  +    Sorry = {error, ErrorReasons},
       _ = lager:error("do_get_block/11 failed. Errors: ~p", [ErrorReasons]),
       ok = riak_cs_get_fsm:chunk(ReplyPid, {UUID, BlockNumber}, Sorry);
   do_get_block(ReplyPid, Bucket, Key, ClusterID, UseProxyGet, ProxyActive,
  
positive.code:         {ok, _} = Success ->
              ProceedFun(Success);
          {error, {insufficient_vnodes,_,need,_} = Reason} ->
              RetryFun([Reason|ErrorReasons]);
          {error, Why} when Why == notfound;
                            Why == timeout;
                            Why == disconnected;
                            Why == <<"{insufficient_vnodes,0,need,1}">>;
                            Why == {insufficient_vnodes,0,need,1} ->
              handle_local_notfound(RcPid, FullBucket, FullKey, GetOptions2,
                                    ProceedFun, RetryFun, [Why|ErrorReasons], UseProxyGet,
                                    ProxyActive, ClusterID);
          {error, Other} ->
              _ = lager:error("do_get_block: other error 1: ~p\n", [Other]),
              RetryFun([Other|ErrorReasons])
      end.
  
  handle_local_notfound(RcPid, FullBucket, FullKey, GetOptions2,
  
negative.code:         {error, Why} when Why == disconnected;
                            Why == timeout ->
              _ = lager:debug("get_block_local/5 failed: {error, ~p}", [Why]),
              RetryFun([{local_quorum, Why}|ErrorReasons]);
  
          {error, notfound} when UseProxyGet andalso ProxyActive->
              case get_block_remote(RcPid, FullBucket, FullKey,
  