anchor.diff:  mock_unload(Nodes, Modules) ->
       lists:foreach(fun(Node) ->
           lists:foreach(fun(Module) ->
  -            ?assertMatch(ok, rpc:call(Node, ?MODULE, mock_action, [{unload, Module}], ?TIMEOUT))
  +            do_action(fun() -> rpc:call(Node, ?MODULE, mock_action, [{unload, Module}], ?TIMEOUT) end)
           end, as_list(Modules))
       end, as_list(Nodes)).
   
  
positive.code: 
      lists:foreach(
          fun(Node) ->
              ok = rpc:call(Node, gen_server, call, [node_manager, {apply, datastore, initialize_state, [H]}], timer:seconds(30))
          end, Nodes).
  
  
  
negative.code:                 _:_ -> ok % will be checked and rerun
              end,
              check_and_unload_mock(Module, Num - 1)
      end.
  
  %%--------------------------------------------------------------------
  %% @private
  %% @doc
  %% Executes function with retries (fun should end with ok).
  %% @end
  %%--------------------------------------------------------------------
  -spec do_action(Fun :: fun(() -> ok)) -> ok | no_return().
  do_action(Fun) ->
      do_action(Fun, 10).
  
  %%--------------------------------------------------------------------
  %% @private
  %% @doc
  %% Executes function with retries (fun should end with ok).
  %% @end
  %%--------------------------------------------------------------------
  -spec do_action(Fun :: fun(() -> ok), Num :: integer()) -> ok | no_return().
  do_action(Fun, 0) ->
      ?assertMatch(ok, Fun());
  do_action(Fun, Num) ->
      try
          case Fun() of
              ok ->
                  ok;
              Other ->
                  ct:print("Action ~p failed with ans: ~p", [Fun, Other]),
                  do_action(Fun, Num - 1)
          end
      catch
          E1:E2 ->
              ct:print("Action ~p failed with error: ~p", [Fun, {E1, E2}]),
              do_action(Fun, Num - 1)
      end.