According https://webaudio.github.io/web-speech-api/#start-session-algorithm, microphone permission is requested in step 5. If denied, the steps are aborted. I would have thought that an error event handler would have been fired.