anchor.diff:  push(Name, RegIds, Message) ->
       push(Name, RegIds, Message, 1).
   
  -push(Name, RegIds, Message, Retry) ->
  -    gen_server:cast(Name, {send, RegIds, Message, Retry}).
  +push(Name, RegIds, Message, Attempt) ->
  +    gen_server:cast(Name, {send, RegIds, Message, Attempt}).
   
   sync_push(Name, RegIds, Message) ->
       sync_push(Name, RegIds, Message, 1).
   
  -sync_push(Name, RegIds, Message, Retry) ->
  -    gen_server:call(Name, {send, RegIds, Message, Retry}).
  +sync_push(Name, RegIds, Message, Attempt) ->
  +    gen_server:call(Name, {send, RegIds, Message, Attempt}).
   
   %% OTP
   start_link(Name, Key) ->
  
positive.code: -export([push/3, push/4, sync_push/3, sync_push/4]).
  
  -define(SERVER, ?MODULE).
  -define(RETRY, 3).
  
  -record(state, {key}).
  
  
negative.code: handle_call(stop, _From, State) ->
      {stop, normal, stopped, State};
  
  handle_call({send, RegIds, Message, Attempt}, _From, #state{key=Key} = State) ->
      Reply = do_push(RegIds, Message, Key, Attempt),
      {reply, Reply, State};
  
  handle_call(_Request, _From, State) ->
      Reply = ok,
      {reply, Reply, State}.
  
  handle_cast({send, RegIds, Message, Attempt}, #state{key=Key} = State) ->
      do_push(RegIds, Message, Key, Attempt),
      {noreply, State};
  
  handle_cast(_Msg, State) ->
  