anchor.diff:                   #rec{w=W, pw=PW, n_val=NVal, from=self(),
                         start_ts=StartTS,
                         size=size(EncodedVal)}}),
  -            Timeout = case proplists:get_value(timeout, Options, ?DEFAULT_TIMEOUT) of
  -                          N when is_integer(N) andalso N > 0 ->
  -                              N;
  -                          _ ->
  -                              ?DEFAULT_TIMEOUT
  -                      end,
  -            % this is not direct gen_server:call because the process that
  -            % replies is not the one that received the cast
  -            receive
  -                {'DOWN', ReqId, process, _Pid, _Reason} ->
  -                    {error, riak_kv_w1c_server_crashed};
  -                {ReqId, Response} ->
  -                    erlang:demonitor(ReqId, [flush]),
  -                    Response
  -            after Timeout ->
  -                gen_server:cast(Worker, {cancel, ReqId}),
  -                receive
  -                    {'DOWN', ReqId, process, _Pid, _Reason} ->
  -                        {error, riak_kv_w1c_server_crashed};
  -                    {ReqId, Response} ->
  -                        erlang:demonitor(ReqId, [flush]),
  -                        Response
  -                end
  -            end;
  +            {ok, {ReqId, Worker}};
           Error ->
               Error
       end.
  +
  +-spec async_put_replies(ReqIds :: list({reference(), pid()}), riak_object:options()) ->
  +                                       list(term()).
  +async_put_replies(ReqIds, Options) ->
  +    Timeout = case proplists:get_value(timeout, Options, ?DEFAULT_TIMEOUT) of
  +                  N when is_integer(N) andalso N > 0 ->
  +                      N;
  +                  _ ->
  +                      ?DEFAULT_TIMEOUT
  +              end,
  +    async_put_reply_loop(ReqIds, [], os:timestamp(), Timeout).
  +
   
   %%%===================================================================
   %%% gen_server callbacks
  
positive.code:         OldValue ->
              {OldValue, State#state{entries=?DICT_TYPE:erase(ReqId, Entries)}}
      end.
  
negative.code: -behaviour(gen_server).
  
  %% API
  -export([start_link/1, put/2, async_put/2, async_put_replies/2, workers/0]).
  -export([init/1,
      handle_call/3,
      handle_cast/2,
  