Хорошо подумав, решил отказаться от концепции iterations, а вычислять время активной операции на каждой итерации и прерывания будут разруливаться автоматически планировщиком. Каждой задаче можно будет задать приоритет.
Т.е. можно будет просто делать вызов $C и не думать, что он-что то там залочит.
$C(...).forEach(() => {
...
}, {worker: true})
$C(...).forEach(() => {
...
}, {worker: true})
$C(...).forEach(() => {
...
}, {worker: true})
$C(...).forEach(() => {
...
}, {worker: true})
... over 9000 операций
Количество активных операций и сами операции будит рулить планировщик, т.е. программисту об этом думать не нужно. Интерфейс обратного вызова будет спроектирован для совместной работы Promise и Async.
Самое приятное, что обновлённый движок Collection 5 позволит очень просто реализовать такую фичу с помощью оператора yield и у нас будет реальная альтернатива "тяжёлым потокам".