<?php if ($block->getHelper()->useWorker()) : ?>
    
    <script data-ommit="true">

        if (window.Worker && 'undefined' !== typeof AEC) 
        {
            function proxyFactory(worker) 
            {
                const handler = 
                {
                    get(target, method) 
                    {
                        return function (...args) 
                        {
                            return new Promise((resolve, reject) => 
                            {
                                const id = Date.now() + Math.random().toString(36).substr(2);

                                worker.onmessage = function (event) 
                                {
                                    const { id: responseId, result, error } = event.data;
                                    
                                    if (responseId === id) 
                                    {
                                        if (error) 
                                        {
                                            reject(new Error(error));
                                        } 
                                        else 
                                        {
                                            resolve(result);
                                        }
                                    }
                                };

                                worker.postMessage({ id, method, args });
                            });
                        };
                    }
                }

                return new Proxy({}, handler);
            }

            AEC.Proxy = proxyFactory
            (
                new Worker(<?php echo json_encode($block->getViewFileUrl('Anowave_Ec::js/worker.js')) ?>)
            );
        }

    </script>

<?php endif ?>