anchor.diff:          _ -> mc_ascii:send(Out, <<"ERROR\r\n">>)
       end,
       mc_downstream:demonitor(Monitors),
  +    {ok, Session};
  +
  +forward_update(_, Session, _, Out, _CmdArgs) ->
  +    % Possibly due to wrong # of CmdArgs.
  +    mc_ascii:send(Out, <<"ERROR\r\n">>),
       {ok, Session}.
  +
  +forward_arith(Cmd, Session,
  +              InSock, _Out, [Key, Amount, "noreply"]) ->
  +    forward_arith(Cmd, Session, InSock, undefined, [Key, Amount]);
   
   forward_arith(Cmd, #session_proxy{bucket = Bucket} = Session,
                 _InSock, Out, [Key, Amount]) ->
  
positive.code: cmd(decr, Session, InSock, Out, CmdArgs) ->
      forward_arith(decr, Session, InSock, Out, CmdArgs);
  
  cmd(delete, #session_proxy{bucket = Bucket} = Session,
      _InSock, Out, [Key]) ->
      {Key, Addrs, Config} = mc_bucket:choose_addrs(Bucket, Key),
  
negative.code:     mc_downstream:demonitor(Monitors),
      {ok, Session};
  
  % TODO:
  % version
  % verbosity
  % stats
  % stats args
  
  cmd(quit, _Session, _InSock, _Out, _Rest) ->
      exit({ok, quit_received});
  
  