anchor.diff:      catch
           E1:E2 ->
               ?error_stacktrace("Slave job ~s of task ~p (module ~p) error ~p:~p",
  -                [to_string(CallbackModule, Job), TaskID, CallbackModule]),
  +                [to_string(CallbackModule, Job), TaskID, CallbackModule, E1, E2]),
               error
       end.
   
  
positive.code:     description => description(),
      finish_callback => job_finish_callback()
  }.
  -type master_job_extended_args() :: #{
      task_id => id(),
      master_job_starter_callback => master_job_starter_callback()
  }.
  -type master_job_starter_callback() :: fun(([job()]) -> ok).
  -type job_finish_callback() :: fun(() -> ok).
  % Types used to provide additional information to framework
  -type timestamp() :: non_neg_integer(). % Timestamp used to sort tasks (usually provided by callback function)
  -type sync_info() ::  #{
  
negative.code:         AsyncMasterJobsList = maps:get(async_master_jobs, MasterAns, []),
          SlaveJobsList = maps:get(slave_jobs, MasterAns, []),
          SequentialSlaveJobsList = maps:get(sequential_slave_jobs, MasterAns, []),
          SlaveJobsDelegatedNum = length(SlaveJobsList) + length(lists:flatten(SequentialSlaveJobsList)),
  
          Description0 = maps:get(description, MasterAns, #{}),
          Description = Description0#{
              slave_jobs_delegated => SlaveJobsDelegatedNum,
              master_jobs_delegated => length(MasterJobsList) + length(AsyncMasterJobsList)
          },
  
          {ok, _, Canceled} = traverse_task:update_description(ExtendedCtx, PoolName, TaskID, Description),
  
          {_, NewDescription, Canceled2} = case Canceled of
  