anchor.diff:  code_change(_OldVsn, State, _Extra) ->
       {ok, State}.
   
  +%% @spec add_to_pool(atom(), integer()) -> [pid()]
  +%% @doc Spin up Count connections in a new pool.
   add_to_pool(ConnMod, Count) ->
       add_to_pool(ConnMod, Count, []).
   
  +%% @spec add_to_pool(atom(), integer(), [pid()]) -> [pid()]
  +%% @doc Spin up Count new connections and add them to Pool.
   add_to_pool(_ConnMod, 0, Pool) ->
       Pool;
   add_to_pool(ConnMod, Count, Pool) ->
       Pid = init_conn(ConnMod),
       add_to_pool(ConnMod, Count - 1, [Pid|Pool]).
   
  +%% @spec init_conn(atom()) -> pid()
  +%% @doc Spin up a new connection.
   init_conn(ConnMod) ->
       {ok, Pid} = ConnMod:new_conn(),
       erlang:monitor(process, Pid),
  
positive.code: 
  exhausted_test() ->
      ConnCount = 3,
      {ok, Pool} = start_link(sock_pool_ut, {?MODULE, ?MODULE}, fun() -> ConnCount end),
      try
          %% Lazy evaluation - does not open pool until first use
          ?assertEqual(0, ?MODULE:current_count(sock_pool_ut)),
  
negative.code:         true ->
              {noreply, State#state{pool=Pool ++ [Conn]}};
          false ->
              %% process death will have triggered handle_info(#'DOWN'{})
              {noreply, State}
      end;
  handle_cast(_Msg, State) ->
      {noreply, State}.
  
  handle_info(#'DOWN'{id=DownPid},
              #state{openmod=ConnMod, pool=Pool}=State) ->
      %% Create a new pid to replace the downed one
      Pool1 = lists:delete(DownPid, Pool) ++ [init_conn(ConnMod)],
      {noreply, State#state{pool=Pool1}};
  