anchor.diff:  
   -type time_unit() :: us | ms | s | min | h.
   
  +-define(TIMEOUT, 60000).
  +
   %%%===================================================================
   %%% API
   %%%===================================================================
  
positive.code: %% A  parallel version of lists:map/2. See {@link lists:map/2}
  %% @end
  %%--------------------------------------------------------------------
  -spec pmap(Fun :: fun((X :: A) -> B), L :: [A]) -> [B].
  pmap(Fun, L) ->
      Self = self(),
      Ref = erlang:make_ref(),
  
negative.code: %% Joins pforeach processes.
  %% @end
  %%--------------------------------------------------------------------
  -spec pforeach_gather([pid()], Ref :: reference()) -> ok | error.
  pforeach_gather([], _Ref) -> ok;
  pforeach_gather(Pids, Ref) ->
      receive
          {Ref, Pid} -> pforeach_gather(Pids -- [Pid], Ref)
      after
          ?TIMEOUT ->
              IsAnyAlive = lists:foldl(fun
                  (_, true) ->
                      true;
                  (Pid, _Acc) ->
                      erlang:is_process_alive(Pid)
              end, false, Pids),
              case IsAnyAlive of
                  true ->
                      pforeach_gather(Pids, Ref);
                  false ->
                      error
              end
      end.
  
  