anchor.diff:      #{service => lists:nth(MyId rem length(?SERVICES) + 1, ?SERVICES),
         body => base64:encode(crypto:strong_rand_bytes(50)),
         title => base64:encode(crypto:strong_rand_bytes(10))
  -    }.+    }.
  
positive.code:     URL = "https://" ++ ?HOST ++ ":" ++ integer_to_list(?PORT),
      lager:debug("Request to: ~p", [URL]),
  
      exometer:update(?NOTIFICATIONS_ALL(Service), 1),
      case http_req:post_request(URL, Path, Headers, jiffy:encode(Notification)) of
          {ok, {{StatusCodeBin, StateMsg}, _RespHeaders, RespBody, _, TimeDiff}} ->
              exometer:update(?NOTIFICATIONS_SENT(Service), 1),
              exometer:update(?NOTIFICATIONS_PUSH_TIME(Service), TimeDiff),
              case binary_to_integer(StatusCodeBin) of
                  StatusCode when StatusCode >= 200, StatusCode < 300 ->
                      exometer:update(?NOTIFICATIONS_OK(Service), 1);
                  _StatusCode ->
                      exometer:update(?NOTIFICATIONS_ERROR(Service), 1)
              end,
  
              lager:debug("Request finished ~p: ~p ~p ~p ~p ms",
  
negative.code: 
  -define(SERVICES, [fcm, apns]).
  
  -define(NOTIFICATIONS_ALL(S),          [notifications, S, all]).
  -define(NOTIFICATIONS_SENT(S),         [notifications, S, sent]).
  -define(NOTIFICATIONS_OK(S),           [notifications, S, ok]).
  -define(NOTIFICATIONS_ERROR(S),        [notifications, S, error]).
  -define(NOTIFICATIONS_PUSH_TIME(S),    [notifications, S, push_time]).
  
  -define(SPIRAL_METRICS(S), [
      ?NOTIFICATIONS_ALL(S), ?NOTIFICATIONS_SENT(S), ?NOTIFICATIONS_OK(S), ?NOTIFICATIONS_ERROR(S)
  