anchor.diff:              VersionInfo = [{server_version, ServerVersion}]
       end,
       {reply, {ok, NodeInfo++VersionInfo}, State};
  -process_response(#rpbgetreq{}, undefined, rpbgetresp, State) ->
  +process_response(#request{msg = #rpbgetreq{}}, rpbgetresp, State) ->
       %% server just returned the rpbgetresp code - no message was encoded
       {reply, {error, notfound}, State};
  -process_response(#rpbgetreq{bucket = Bucket, key = Key}, _Ctx,
  +process_response(#request{msg = #rpbgetreq{bucket = Bucket, key = Key}},
                    #rpbgetresp{content = RpbContents, vclock = Vclock}, State) ->
       Contents = riakc_pb:erlify_rpbcontents(RpbContents),
       {reply, {ok, riakc_obj:new_obj(Bucket, Key, Vclock, Contents)}, State};
   
  -process_response(#rpbputreq{}, undefined, rpbputresp, State) ->
  +process_response(#request{msg = #rpbputreq{}},
  +                 rpbputresp, State) ->
       %% server just returned the rpbputresp code - no message was encoded
       {reply, ok, State};
  -process_response(#rpbputreq{bucket = Bucket, key = Key}, _Ctx,
  +process_response(#request{msg = #rpbputreq{bucket = Bucket, key = Key}},
                    #rpbputresp{content = RpbContents, vclock = Vclock}, State) ->
       Contents = riakc_pb:erlify_rpbcontents(RpbContents),
       {reply, {ok, riakc_obj:new_obj(Bucket, Key, Vclock, Contents)}, State};
   
  -process_response(#rpbdelreq{}, undefined, rpbdelresp, State) ->
  +process_response(#request{msg = #rpbdelreq{}},
  +                 rpbdelresp, State) ->
       %% server just returned the rpbdelresp code - no message was encoded
       {reply, ok, State};
   
  -process_response(rpblistbucketsreq, undefined,
  +process_response(#request{msg = rpblistbucketsreq},
                    #rpblistbucketsresp{buckets = Buckets}, State) ->
       {reply, {ok, Buckets}, State};
   
  -process_response(rpblistbucketsreq, undefined,
  +process_response(#request{msg = rpblistbucketsreq},
                    rpblistbucketsresp, State) ->
       %% empty buckets generate an empty message
       {reply, {ok, []}, State};
   
  -process_response(#rpblistkeysreq{}, {ReqId, Client},
  +process_response(#request{msg = #rpblistkeysreq{}, ctx = {ReqId, Client}},
                    #rpblistkeysresp{done = Done, keys = Keys}, State) ->
       case Keys of
           undefined ->
  
positive.code: %% ====================================================================
  %% internal functions
  %% ====================================================================
  
  default_timeout(_Op) ->
      60000.
  
negative.code: %%        reply if the request is completed with a reply to the caller
  %%        pending if the request has not completed yet (streaming op)
  %% @private
  -spec process_response(#request{}, rpb_resp(), #state{}) ->
                                {noreply, #state{}} |
                                {reply, term(), #state{}} |
                                {pending, #state{}}.
  process_response(#request{msg = rpbpingreq}, rpbpingresp, State) ->
      {reply, pong, State};
  process_response(#request{msg = rpbgetclientidreq},
                   #rpbgetclientidresp{client_id = ClientId}, State) ->
      {reply, {ok, ClientId}, State};
  process_response(#request{msg = #rpbsetclientidreq{}},
                   rpbsetclientidresp, State) ->
      {reply, ok, State};
  process_response(#request{msg = rpbgetserverinforeq},
                   #rpbgetserverinforesp{node = Node, server_version = ServerVersion}, State) ->
      case Node of
          undefined ->
  