'How to make safari play an web audio api buffer source node?

I have a code that load a audio file with fetch and decode to an audiobuffer and then i create a bufersourcenode in web audio api to receive that audio buffer and play it when i press a button in my web page. In chrome my code works fine. But in safari ... no sound. Reading web audio api related questions with safari some people say that web audio api need to receive input from user in order to play sound. In my case i have a button to be tapped in order to play the sound, a user input already. But it is not working. I found an answer that tells the web audio api decodeAudiodata do not work with promises in safari and it must use an old syntax. I have tried the way the answer treat the decodeAudiodata but still no sound.... Please somebody can help me here? thanks for any help!

   <button ontouchstart="bPlay1()">Button to play sound</button>

    window.AudioContext = window.AudioContext || window.webkitAudioContext;
    const ctx = new AudioContext();

    let au1;
    window.fetch("./sons/BumboSub.ogg")
   .then(response => response.arrayBuffer())
   .then(arrayBuffer => ctx.decodeAudioData(arrayBuffer,
                                               audioBuffer => {
                                                 au1 = audioBuffer;
                                                 return au1;
                                                },
                                               error =>
                                               console.error(error)
                                             ));

   function bPlay1(){
    ctx.resume();
    bot = "Botão 1";
    var playSound1b = ctx.createBufferSource();
    var vb1 = document.getElementById('sld1').value;
    playSound1b.buffer = au1;
    var gain1b = ctx.createGain();
    playSound1b.connect(gain1b);
    gain1b.connect(ctx.destination);
    gain1b.connect(dest);
    gain1b.gain.value = vb1;
    console.log(au1); ///shows in console!
    console.log(playSound1b);  ///shows in console!
    playSound1b.start(ctx.currentTime);
   }


Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source