anchor.diff:            address :: address(),    % address to connect to
             port :: portnum(),       % port to connect to
             sock :: port(),       % gen_tcp socket
  -          queue :: queue() | undefined,
  -          auto_reconnect = false :: boolean(), % if true, automatically reconnects to server
  -                                               % if false, exits on connection failure/request timeout
  +          active :: #request{} | undefined,     % active request
             connect_timeout=infinity :: timeout(), % timeout of TCP connection
  -          keepalive = false :: boolean(), % if true, enabled TCP keepalive for the socket
  -          connects=0 :: non_neg_integer(), % number of successful connects
  -          reconnect_interval=?FIRST_RECONNECT_INTERVAL :: non_neg_integer(),
  -          credentials :: undefined | {string(), string()} % username/password
  +          keepalive = false :: boolean() % if true, enabled TCP keepalive for the socket
            }).
   
   -export([start_link/2, start_link/3,
  
positive.code:          terminate/2]).
  
  -export([
           get/1
          ]).
  
  get(Pid) ->
      Req = #fpbincrementreq{key="key", amount=2},
      call_infinity(Pid, {req, Req}).
  
  %% Callback functions
  
  %% @private
  init([Address, Port, _Options]) ->
      State = #state{address = Address, port = Port, queue = queue:new()},
      case connect(State) of
          {error, Reason} ->
              {stop, {tcp, Reason}};
  
negative.code: -behaviour(gen_server).
  
  -define(FIRST_RECONNECT_INTERVAL, 100).
  -define(TIMEOUT, 1000).
  
  -type address() :: string() | atom() | inet:ip_address(). %% The TCP/IP host name or address of the Riak node
  -type portnum() :: non_neg_integer(). %% The TCP port number of the Riak node's Protocol Buffers interface
  