async function createVoiceFocusDeviceTransformer()

in src/providers/VoiceFocusProvider/index.tsx [132:163]


  async function createVoiceFocusDeviceTransformer(
    spec: VoiceFocusSpec | undefined,
    options: VoiceFocusDeviceOptions | undefined,
    canceled: () => boolean
  ): Promise<VoiceFocusDeviceTransformer> {
    const fetch = VoiceFocusDeviceTransformer.create(spec, options);
    fetch
      .then((transformer) => {
        // A different request arrived afterwards. Drop this one on the floor
        // using the cancellation mechanism of `useEffect`.
        if (canceled()) {
          return;
        }

        currentPromise = undefined;
        setVoiceFocusTransformer(transformer);
        setVoiceFocusDevice(null);
        setIsVoiceFocusSupported(transformer && transformer.isSupported());
      })
      .catch((e) => {
        if (canceled()) {
          return;
        }

        currentPromise = undefined;
        setVoiceFocusTransformer(null);
        setVoiceFocusDevice(null);
        setIsVoiceFocusSupported(false);
      });

    return (currentPromise = fetch);
  }