anchor.diff:      case get_worker() of
           {error, _W} = Error -> Error;
           Worker ->
  -            try 
  +            try
                   apply_worker_operation(Worker, Fun)
               after
                   riak_pool:free_worker(Worker)
  
positive.code:                  {ok, riakc_obj:riakc_obj()} | {error, term() | unchanged}.
  get(Worker, A, B, C) ->
    call_worker(Worker, get, [A, B, C]).
  -spec get(worker(), 
            riakc_pb_socket:bucket() | string(), 
            riakc_pb_socket:key() | string(),
            riakc_pb_socket:riak_pbc_options(), 
            timeout()) ->
                   {ok, riakc_obj:riakc_obj()} | 
                   {error, term() | unchanged}.
  get(Worker, A, B, C, D) ->
    call_worker(Worker, get, [A, B, C, D]).
  
negative.code: 
  -type worker() :: {atom(), pid()}.
  
  -spec call_worker(atom() | worker(), fun(), [term()]) -> term().
  call_worker({_Pool, WorkerPid}, Function, Args)->
      apply(riakc_pb_socket , Function, [WorkerPid|Args]);
  call_worker(Pool, Function, Args) when is_atom(Pool) ->
      case get_worker(Pool) of
          {error, _W} = Error -> Error;
          Worker ->
              try
                  call_worker(Worker, Function, Args)
              after
                  riak_pool:free_worker(Worker)
              end
      end.
  
  -spec get_worker() -> worker().
  get_worker()->
      do_get_worker(riak_pool_balancer:get_pool()).
  
  