Как оптимизировать данную функцию
    function executeCommands(out_string) {
        self.history.add(out_string.trim());
        // Создаем элемент прогресс-бара, если он еще не существует
        if (!$("#cli-progress-container")) {
            $("div.tab-cli .cli-preloader").append(
            '<div id="cli-progress-container" style="margin: 10px 0; display: none;"><div class="progress"><div id="cli-progress-bar" class="progress-bar" role="progressbar" style="width: 0%;" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100"></div><span class="percent">0%</span></div></div>',
            );
        }

        var outputArray = out_string.split("\n");
        var totalCommands = outputArray.length;
        var completedCommands = 0;

        // Показываем прогресс-бар
        $("#cli-progress-container").show();
        return outputArray.reduce((p, line, index) =>
            p.then((delay) =>
                new Promise((resolve) => {
                    timeout.add('CLI_send_slowly', () => {
                        let processingDelay = TABS.cli.lineDelayMs;
                        if (line.toLowerCase().includes("_profile")) {
                            processingDelay = TABS.cli.profileSwitchDelayMs;
                        }
                        var isLastCommand = outputArray.length === index + 1;
                        if (isLastCommand && TABS.cli.cliBuffer) {
                            line = getCliCommand(line, TABS.cli.cliBuffer);
                        }
                        if (line.toLowerCase().includes('_profile')) {
                            processingDelay = TABS.cli.profileSwitchDelayMs;
                        }
                        isLastCommand = outputArray.length === index + 1;
                        if (isLastCommand && TABS.cli.cliBuffer) {
                            line = getCliCommand(line, TABS.cli.cliBuffer);
                        }
                        completedCommands++;
                        const progressPercent = Math.round((completedCommands / totalCommands) * 100);
                        $("#cli-progress-bar")
                            .css("width", progressPercent + "%")
                            .attr("aria-valuenow", progressPercent);
                        $('.progress .percent').text(progressPercent + "%");
                        if (progressPercent > 50) {
                            $('.progress .percent').css('color', '#FFF');
                        } else {
                            $('.progress .percent').css('color', '');
                        }

                        // Если все команды выполнены, скрываем прогресс-бар через некоторое время
                        if (isLastCommand) {
                            setTimeout(() => {
                            $("#cli-progress-container").fadeOut(500, () => {
                                $("#cli-progress-bar").css("width", "0%").attr("aria-valuenow", 0);
                                $('.progress .percent').text("0%");
                            });
                            }, 1000);
                        }
                        TABS.cli.sendLine(line, () => {
                            resolve(processingDelay);
                        });
                    }, delay);
                })
            ), Promise.resolve(0),
        );
    }