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:                 SlaveAnswers = run_on_slave_pool(
                      PoolName, SlavePool, CallbackModule, ExtendedCtx, TaskID, SlaveJobsList),
  
                  Fun = maps:get(finish_callback, MasterAns, fun() -> ok end),
                  Fun(),
                  ok = run_on_master_pool(
                      PoolName, MasterPool, SlavePool, CallbackModule, ExtendedCtx, Executor, TaskID, MasterJobsList),
  
  
negative.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((id(), description()) -> 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() ::  #{
  