anchor.diff:      [{description, <<"Sharding interceptor for channel methods">>}].
   
   intercept(#'basic.consume'{queue = QName} = Method, VHost) ->
  -    {ok, QName2} = queue_name(VHost, QName),
  -    {ok, Method#'basic.consume'{queue = QName2}};
  +    case queue_name(VHost, QName) of
  +        {ok, QName2} ->
  +            {ok, Method#'basic.consume'{queue = QName2}};
  +        {error, QName} ->
  +            {error, rabbit_misc:format("Error finding sharded queue for: ~p", [QName])}
  +    end;
   
   intercept(#'basic.get'{queue = QName} = Method, VHost) ->
  -    {ok, QName2} = queue_name(VHost, QName),
  -    {ok, Method#'basic.get'{queue = QName2}};
  +    case queue_name(VHost, QName) of
  +        {ok, QName2} ->
  +            {ok, Method#'basic.get'{queue = QName2}};
  +        {error, QName} ->
  +            {error, rabbit_misc:format("Error finding sharded queue for: ~p", [QName])}
  +    end;
   
   intercept(#'queue.delete'{queue = QName} = Method, VHost) ->
       case is_sharded(VHost, QName) of
  
positive.code:       fun(Q) ->
                rabbit_amqqueue:info(Q, [consumers])
        end).
  
  do_n(F, N) ->
      do_n(F, 0, N, []).
  
  do_n(_F, N, N, Acc) ->
      Acc;
  do_n(F, Count, N, Acc) ->
      Acc2 = case F(Count) of
                 {error, _} -> Acc;
                 Ret        -> [Ret|Acc]
             end,
      do_n(F, Count+1, N, Acc2).
  
negative.code: lookup_exchange(VHost, QBin) ->
      rabbit_exchange:lookup(rabbit_misc:r(VHost, exchange, QBin)).
  
  least_consumers(VHost, QBin, N) ->
      F = fun(QNum) ->
                  QBin2 = rabbit_sharding_util:make_queue_name(
  