/**
 * Descarta respuestas viejas: cada petición toma un número y sólo la última puede escribir en pantalla. Sin esto, elegir
 * otro archivo mientras el anterior se lee o se revisa deja el resultado del primero mostrado como si fuera del segundo.
 */
export function crearSecuencia() {
  let ultima = 0;

  return {
    /** Una petición nueva; invalida todas las anteriores. */
    nueva(): number {
      return ++ultima;
    },
    /** `true` mientras ninguna petición posterior haya empezado. */
    vigente(numero: number): boolean {
      return numero === ultima;
    },
    /** Invalida lo que esté en vuelo sin empezar otra petición. */
    invalidar(): void {
      ++ultima;
    },
  };
}
