anchor.diff:  %% LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
   %% OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
   %% THE SOFTWARE.
  - 
  +
   -module(gen_nb_server).
  - 
  +
   -author('kevin@hypotheticalabs.com').
  - 
  +
   -behaviour(gen_server).
  - 
  +
   %% API
   -export([start_link/4]).
  - 
  +
   %% Behavior callbacks
   -export([behaviour_info/1]).
  - 
  +
   %% gen_server callbacks
   -export([init/1, handle_call/3, handle_cast/2, handle_info/2,
            terminate/2, code_change/3]).
  - 
  +
   -define(SERVER, ?MODULE).
  - 
  +
   -record(state, {cb,
                   sock,
                   server_state}).
  - 
  +
   %% @hidden
   behaviour_info(callbacks) ->
     [{init, 1},
  
positive.code: %% @doc Start server listening on IpAddr:Port
  start_link(CallbackModule, IpAddr, Port, InitParams) ->
    gen_server:start_link(?MODULE, [CallbackModule, IpAddr, Port, InitParams], []).
   
  %% @hidden
  init([CallbackModule, IpAddr, Port, InitParams]) ->
    case CallbackModule:init(InitParams) of
  
negative.code:     Err ->
        Err
    end.
  
  %% @hidden
  handle_call(Request, From, #state{cb=Callback, server_state=ServerState}=State) ->
    case Callback:handle_call(Request, From, ServerState) of
  