 = setTimeout(() => {
          Swal.close();
          abortIfNeeded('timeout');
        }, LAUNCH_TIMEOUT_MS);
  
        try {
          const resp = await fetch('/qgc', { method: 'POST', signal: controller.signal });
  
          clearTimeout(timeoutId);
          controller = null;
          setBusy(false);
          Swal.close();
  
          if (resp.ok) {
            Swal.fire({ title: "QGroundControl launched", icon: "success", timer: 1600, showConfirmButton: false });
          } else {
          