anchor.diff:  
   update_error_fun(Name, Fun) ->
       gen_server:cast(Name, {error_fun, Fun}).
  -%%%===================================================================
  -%%% gen_server callbacks
  -%%%===================================================================
  -
  -%%--------------------------------------------------------------------
  -%% @private
  -%% @doc
  -%% Initializes the server
  -%%
  -%% @spec init(Args) -> {ok, State} |
  -%%                     {ok, State, Timeout} |
  -%%                     ignore |
  -%%                     {stop, Reason}
  -%% @end
  -%%--------------------------------------------------------------------
  +
   init([Key, ErrorFun]) ->
       {ok, #state{key=Key, retry_after=0, error_fun=ErrorFun}}.
   
  -%%--------------------------------------------------------------------
  -%% @private
  -%% @doc
  -%% Handling call messages
  -%%
  -%% @spec handle_call(Request, From, State) ->
  -%%                                   {reply, Reply, State} |
  -%%                                   {reply, Reply, State, Timeout} |
  -%%                                   {noreply, State} |
  -%%                                   {noreply, State, Timeout} |
  -%%                                   {stop, Reason, Reply, State} |
  -%%                                   {stop, Reason, State}
  -%% @end
  -%%--------------------------------------------------------------------
   handle_call(stop, _From, State) ->
       {stop, normal, stopped, State};
   
  
positive.code: %%%-------------------------------------------------------------------
  %%% @author Paolo D'Incau <paolo.dincau@gmail.com>
  %%% @copyright (C) 2013, Paolo D'Incau
  %%% @doc
  %%%
  %%% @end
  %%% Created : 18 Apr 2013 by Paolo D'Incau <paolo.dincau@gmail.com>
  %%%-------------------------------------------------------------------
  -module(gcm).
  
  -behaviour(gen_server).
  
  %% API
  -export([start/2, start/3, stop/1, start_link/2, start_link/3]).
  -export([push/3, sync_push/3, update_error_fun/2]).
  
  %% gen_server callbacks
  -export([init/1, handle_call/3, handle_cast/2, handle_info/2,
  	 terminate/2, code_change/3]).
  
  
negative.code: handle_cast(_Msg, State) ->
      {noreply, State}.
  
  handle_info(_Info, State) ->
      {noreply, State}.
  
  terminate(_Reason, _State) ->
      ok.
  
  code_change(_OldVsn, State, _Extra) ->
      {ok, State}.
  
  
  do_push(RegIds, Message, Key, ErrorFun) ->
      error_logger:info_msg("Message=~p; RegIds=~p~n", [Message, RegIds]),
      Request = jsx:encode([{<<"registration_ids">>, RegIds}|Message]),
      ApiKey = string:concat("key=", Key),
  
      try httpc:request(post, {?BASEURL, [{"Authorization", ApiKey}], "application/json", Request}, [], []) of
          {ok, {{_, 200, _}, _Headers, Body}} ->
              Json = jsx:decode(response_to_binary(Body)),
  