Erro do AudioWorklet: DOMException: o usuário anulou uma solicitação
Instanciei com êxito um AudioWorklet simples no React e desejo iniciar um oscilador simples, como no exemplo do Google. Para testar a execução, estou renderizando um botão cujo evento onClick chama o seguinte:
src / App.jsx:
userGesture(){
//create a new AudioContext
this.context = new AudioContext();
//Add our Processor module to the AudioWorklet
this.context.audioWorklet.addModule('worklet/processor.js').then(() => {
//Create an oscillator and run it through the processor
let oscillator = new OscillatorNode(this.context);
let bypasser = new MyWorkletNode(this.context, 'my-worklet-processor');
//Connect to the context's destination and start
oscillator.connect(bypasser).connect(this.context.destination);
oscillator.start();
})
.catch((e => console.log(e)))
}
O problema é que, a cada clique, o método addModule está retornando o seguinte erro:
DOMException: The user aborted a request.
Estou executando o Chrome v66 no Ubuntu v16.0.4.
src / worklet / worklet-node.js:
export default class MyWorkletNode extends window.AudioWorkletNode {
constructor(context) {
super(context, 'my-worklet-processor');
}
}
src / worklet / processor.js
class MyWorkletProcessor extends AudioWorkletProcessor {
constructor() {
super();
}
process(inputs, outputs) {
let input = inputs[0];
let output = outputs[0];
for (let channel = 0; channel < output.length; ++channel) {
output[channel].set(input[channel]);
}
return true;
}
}
registerProcessor('my-worklet-processor', MyWorkletProcessor);