message: Meta: Don't hide final bisect message when changing tab
diff: @@ -41,6 +41,7 @@ async function onChoiceButtonClick({currentTarget: button}: React.MouseEvent<HTM
  }
  await cache.delete('bisect');
  + window.removeEventListener('visibilitychange', hideMessage);
  }
  async function onEndButtonClick(): Promise<void> {
  @@ -61,6 +62,12 @@ function createMessageBox(message: Element | string, extraButtons?: Element): vo
  );
  }
  +async function hideMessage(): Promise<void> {
  + if (!await cache.get<FeatureID[]>('bisect')) {
  + createMessageBox('Process completed in another tab');
  + }
  +}
  +
  export default async function bisectFeatures(): Promise<Record<string, boolean> | void> {
  // `bisect` stores the list of features to be split in half
  const bisectedFeatures = await cache.get<FeatureID[]>('bisect');
  @@ -87,11 +94,7 @@ export default async function bisectFeatures(): Promise<Record<string, boolean>
  });
  // Hide message when the process is done elsewhere
  - window.addEventListener('visibilitychange', async () => {
  - if (!await cache.get<FeatureID[]>('bisect')) {
  - createMessageBox('Process completed in another tab');
  - }
  - });
  + window.addEventListener('visibilitychange', hideMessage);
  const half = getMiddleStep(bisectedFeatures);
  const temporaryOptions: Record<string, boolean> = {};
  