@brotok вам лучше всего это составлять в конструкторе на условия функций. А там уже запись. В общем у вас буит 4 if -а только смотрите а если у вас совпадет все? При таком методе он 4 раза и запишет
Это давно можно делать. Не так просто, но за то гибко. Запускаем основные части скрипта через "функцию в несколько потоков", а когда эта функция отрабатывает, запускаем функцию, которая выполняет завершающие действия.