test-worker-promise-error.html (1059B)
1 <!DOCTYPE html> 2 <html> 3 <head> 4 <title>Worker/Worklet promise error</title> 5 </head> 6 <body> 7 <script> 8 "use strict"; 9 10 // Promise rejection in Worker (via async function) 11 const workerScript = ` 12 self.onmessage = async () => { 13 throw "worker-error" 14 } 15 `; 16 const workerScriptUrl = URL.createObjectURL(new Blob([workerScript])); 17 const worker = new Worker(workerScriptUrl); 18 worker.postMessage({}); 19 20 // Promise rejection in Worklet (via async function) 21 const workletScript = ` 22 async function throw_process() { 23 throw "worklet-error"; 24 } 25 26 class ErrorProcessor extends AudioWorkletProcessor { 27 process() { 28 throw_process(); 29 } 30 } 31 registerProcessor("error", ErrorProcessor); 32 `; 33 const workletScriptUrl = URL.createObjectURL(new Blob([workletScript])); 34 const context = new AudioContext(); 35 context.audioWorklet.addModule(workletScriptUrl).then(() => { 36 const workletNode = new AudioWorkletNode(context, "error"); 37 const oscillator = new OscillatorNode(context); 38 oscillator.connect(workletNode); 39 oscillator.start(); 40 oscillator.stop(); 41 }); 42 </script> 43 </body> 44 </html>