@context-action/core 1.0.0 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -1416,7 +1416,7 @@ var ActionRegister = class {
1416
1416
  return newUnregister;
1417
1417
  } else {
1418
1418
  if (!existing) throw new Error("Internal error: existing handler should be defined in duplicate handler block");
1419
- this.log(`Handler duplicate ignored, returning existing unregister: ${String(action)}`, {
1419
+ this.log(`Handler duplicate ignored, returning no-op unregister: ${String(action)}`, {
1420
1420
  handlerId,
1421
1421
  existingPriority: existing.config.priority,
1422
1422
  newPriority: config.priority,
@@ -1424,12 +1424,7 @@ var ActionRegister = class {
1424
1424
  newBlocking: config.blocking,
1425
1425
  note: "Use replaceExisting:true to replace"
1426
1426
  }, "warn");
1427
- if (existingUnregister) return existingUnregister;
1428
- else {
1429
- const newUnregister = this.createUnregisterFunction(action, handlerId, existing);
1430
- actionUnregisterFunctions.set(handlerId, newUnregister);
1431
- return newUnregister;
1432
- }
1427
+ return () => {};
1433
1428
  }
1434
1429
  }
1435
1430
  pipeline.push(registration);
@@ -1453,7 +1448,8 @@ var ActionRegister = class {
1453
1448
  const attemptState = { count: 0 };
1454
1449
  const plan = this.resolveDispatchPlan(action, options);
1455
1450
  const hasTimingGuard = plan.debounceMs !== void 0 || plan.throttleMs !== void 0;
1456
- let observerNotified = false;
1451
+ const notifiedObservers = /* @__PURE__ */ new Set();
1452
+ const notifiedObserverOutcomes = /* @__PURE__ */ new Set();
1457
1453
  let terminalErrorReported = false;
1458
1454
  const reportTerminalError = (error) => {
1459
1455
  if (terminalErrorReported) return;
@@ -1461,9 +1457,9 @@ var ActionRegister = class {
1461
1457
  this.invokeErrorHandler(error, action, payload, options, attemptState.count);
1462
1458
  };
1463
1459
  const notifyObservers = async (event) => {
1464
- if (observerNotified) return;
1465
- observerNotified = true;
1466
- await this.executeObservers(action, plan, event);
1460
+ if (notifiedObserverOutcomes.has(event.outcome)) return;
1461
+ notifiedObserverOutcomes.add(event.outcome);
1462
+ await this.executeObservers(action, plan, event, notifiedObservers);
1467
1463
  };
1468
1464
  const pipelineOperation = async () => {
1469
1465
  const guard = plan.guards.length > 0 ? await this.executeGuardPhase(action, payload, timeoutScope.options, plan, dispatchHandlerPromises) : {
@@ -1498,6 +1494,18 @@ var ActionRegister = class {
1498
1494
  this.cleanupOneTimeHandlers(action, executedHandlers, dispatchHandlerPromises);
1499
1495
  }
1500
1496
  }, timeoutScope.options, attemptState, (result) => result.outcome === "failed", () => this.getAttemptHandlers(action, plan).length > 0, void 0, this.shouldDrainBeforeRetry(plan, timeoutScope.options) ? () => this.drainAttemptHandlers(dispatchHandlerPromises) : void 0);
1497
+ if (timeoutScope.options?.signal?.aborted) {
1498
+ if (timeoutScope.options.signal.reason instanceof ActionTimeoutError) throw timeoutScope.options.signal.reason;
1499
+ await notifyObservers({
1500
+ action: String(action),
1501
+ payload: guard.payload,
1502
+ outcome: "cancelled",
1503
+ result: void 0,
1504
+ errors: execution.errors,
1505
+ signal: timeoutScope.options.signal
1506
+ });
1507
+ return;
1508
+ }
1501
1509
  if (execution.outcome === "failed") throw execution.errors[execution.errors.length - 1]?.error ?? /* @__PURE__ */ new Error(`Action "${String(action)}" failed`);
1502
1510
  const result = this.processResults(execution.results, execution.terminated, execution.terminated ? execution.result : void 0, options?.result);
1503
1511
  await notifyObservers({
@@ -1597,7 +1605,7 @@ var ActionRegister = class {
1597
1605
  }
1598
1606
  const observedPromise = this.raceWithTimeout(observedDispatchPromise, timeoutScope, dispatchHandlerPromises).catch(async (error) => {
1599
1607
  reportTerminalError(error);
1600
- if (!observerNotified) await this.trackGlobalHandlerPromise(notifyObservers({
1608
+ this.trackGlobalHandlerPromise(notifyObservers({
1601
1609
  action: String(action),
1602
1610
  payload,
1603
1611
  outcome: "failed",
@@ -1609,7 +1617,9 @@ var ActionRegister = class {
1609
1617
  severity: "blocking"
1610
1618
  }],
1611
1619
  signal: timeoutScope.options?.signal
1612
- }));
1620
+ })).catch((observerError) => {
1621
+ this.log(`Failure observer delivery failed for ${String(action)}`, observerError, "warn");
1622
+ });
1613
1623
  throw error;
1614
1624
  });
1615
1625
  observedPromise.catch(() => {});
@@ -1957,12 +1967,18 @@ var ActionRegister = class {
1957
1967
  /** Observers run after the canonical result has been constructed. Their
1958
1968
  * failures are isolated from that immutable result; detached observers are
1959
1969
  * still tracked for registry shutdown. */
1960
- async executeObservers(action, plan, event) {
1970
+ async executeObservers(action, plan, event, notifiedObservers = /* @__PURE__ */ new Set()) {
1961
1971
  const observerEvent = this.safeSnapshotObserverEvent(event);
1972
+ const selectedObservers = [];
1962
1973
  for (const [registration, observerEntry] of this.getObservers(action, plan)) {
1974
+ if (notifiedObservers.has(registration)) continue;
1963
1975
  const successful = observerEvent.outcome === "completed" || observerEvent.outcome === "completed_with_errors";
1964
1976
  if (observerEntry.when === "success" && !successful) continue;
1965
1977
  if (observerEntry.when === "failure" && successful) continue;
1978
+ notifiedObservers.add(registration);
1979
+ selectedObservers.push([registration, observerEntry]);
1980
+ }
1981
+ for (const [registration, observerEntry] of selectedObservers) {
1966
1982
  let shouldRun = true;
1967
1983
  try {
1968
1984
  shouldRun = registration.config.condition?.(observerEvent.payload) ?? true;
@@ -2229,13 +2245,16 @@ var ActionRegister = class {
2229
2245
  this.cleanupOneTimeHandlers(action, executedHandlers, dispatchHandlerPromises);
2230
2246
  }
2231
2247
  }, timeoutScope.options, attemptState, (result) => result.outcome === "failed", () => this.getAttemptHandlers(action, plan).length > 0, retryTelemetry, this.shouldDrainBeforeRetry(plan, timeoutScope.options) ? () => this.drainAttemptHandlers(dispatchHandlerPromises) : void 0);
2232
- if (timeoutScope.options?.signal?.aborted) return {
2233
- ...rawExecution,
2234
- success: false,
2235
- aborted: true,
2236
- abortReason: typeof timeoutScope.options.signal.reason === "string" ? timeoutScope.options.signal.reason : "Action dispatch aborted by signal",
2237
- outcome: "cancelled"
2238
- };
2248
+ if (timeoutScope.options?.signal?.aborted) {
2249
+ if (timeoutScope.options.signal.reason instanceof ActionTimeoutError) throw timeoutScope.options.signal.reason;
2250
+ return {
2251
+ ...rawExecution,
2252
+ success: false,
2253
+ aborted: true,
2254
+ abortReason: typeof timeoutScope.options.signal.reason === "string" ? timeoutScope.options.signal.reason : "Action dispatch aborted by signal",
2255
+ outcome: "cancelled"
2256
+ };
2257
+ }
2239
2258
  const executionWithGuards = {
2240
2259
  ...rawExecution,
2241
2260
  handlers: [...guard.outcomes.map((outcome) => ({
@@ -2296,7 +2315,8 @@ var ActionRegister = class {
2296
2315
  timeoutScope.onTimeout((error) => queued.cancel(error));
2297
2316
  return queued.promise;
2298
2317
  };
2299
- let observerNotified = false;
2318
+ const notifiedObservers = /* @__PURE__ */ new Set();
2319
+ const notifiedObserverOutcomes = /* @__PURE__ */ new Set();
2300
2320
  let terminalErrorReported = false;
2301
2321
  const reportTerminalError = (error) => {
2302
2322
  if (terminalErrorReported) return;
@@ -2304,9 +2324,9 @@ var ActionRegister = class {
2304
2324
  this.invokeErrorHandler(error, action, payload, options, attemptState.count);
2305
2325
  };
2306
2326
  const notifyObservers = async (event) => {
2307
- if (observerNotified) return;
2308
- observerNotified = true;
2309
- await this.executeObservers(action, plan, event);
2327
+ if (notifiedObserverOutcomes.has(event.outcome)) return;
2328
+ notifiedObserverOutcomes.add(event.outcome);
2329
+ await this.executeObservers(action, plan, event, notifiedObservers);
2310
2330
  };
2311
2331
  let dispatchPromise;
2312
2332
  let observedDispatchPromise;
@@ -2364,7 +2384,7 @@ var ActionRegister = class {
2364
2384
  }
2365
2385
  const observedPromise = this.raceWithTimeout(observedDispatchPromise, timeoutScope, dispatchHandlerPromises).catch(async (error) => {
2366
2386
  reportTerminalError(error);
2367
- if (!observerNotified) await this.trackGlobalHandlerPromise(notifyObservers({
2387
+ this.trackGlobalHandlerPromise(notifyObservers({
2368
2388
  action: String(action),
2369
2389
  payload: observerPayload,
2370
2390
  outcome: "failed",
@@ -2376,7 +2396,9 @@ var ActionRegister = class {
2376
2396
  severity: "blocking"
2377
2397
  }],
2378
2398
  signal: timeoutScope.options?.signal
2379
- }));
2399
+ })).catch((observerError) => {
2400
+ this.log(`Failure observer delivery failed for ${String(action)}`, observerError, "warn");
2401
+ });
2380
2402
  throw error;
2381
2403
  });
2382
2404
  observedPromise.catch(() => {});
@@ -2616,7 +2638,7 @@ var ActionRegister = class {
2616
2638
  if (resultOptions.maxResults !== void 0 && (!Number.isSafeInteger(resultOptions.maxResults) || resultOptions.maxResults < 0)) throw new RangeError("maxResults must be a non-negative safe integer.");
2617
2639
  }
2618
2640
  processResults(results, terminated, terminationResult, resultOptions) {
2619
- if (terminated && terminationResult !== void 0) return terminationResult;
2641
+ if (terminated) return terminationResult;
2620
2642
  if (!resultOptions) return results.length > 0 ? results[results.length - 1] : void 0;
2621
2643
  if (!resultOptions.collect && !resultOptions.strategy) return;
2622
2644
  const collectedResults = results.filter((result) => result !== void 0);
@@ -2990,7 +3012,7 @@ var ActionRegister = class {
2990
3012
  cancelPendingDispatches() {
2991
3013
  this.dispatchQueue?.clear({ rejectPending: true });
2992
3014
  }
2993
- beginShutdown() {
3015
+ beginShutdown(deferCleanup = false) {
2994
3016
  if (this.destroyAsyncPromise) return this.destroyAsyncPromise;
2995
3017
  if (this.lifecycleState === "destroyed") {
2996
3018
  this.destroyAsyncPromise = Promise.resolve();
@@ -3010,7 +3032,7 @@ var ActionRegister = class {
3010
3032
  rejectPending: true,
3011
3033
  reason: shutdownError
3012
3034
  });
3013
- if (this.dispatchConstructionDepth === 0 && this.activeDispatches.size === 0 && this.activeHandlerPromises.size === 0) {
3035
+ if (!deferCleanup && this.dispatchConstructionDepth === 0 && this.activeDispatches.size === 0 && this.activeHandlerPromises.size === 0) {
3014
3036
  this.finalizeDestroy();
3015
3037
  resolveShutdown();
3016
3038
  return this.destroyAsyncPromise;
@@ -3048,13 +3070,18 @@ var ActionRegister = class {
3048
3070
  * Begin terminal shutdown and resolve after all started handlers have settled
3049
3071
  * and their registered cleanup functions have run.
3050
3072
  *
3073
+ * `deferCleanup` closes the register synchronously while deferring final
3074
+ * registered cleanup until the next microtask. This is useful for React
3075
+ * commit phases that must invalidate stale dispatchers immediately without
3076
+ * invoking user cleanup code inside the commit hook itself.
3077
+ *
3051
3078
  * Repeated calls return the same promise. New registrations and dispatches are
3052
3079
  * rejected as soon as shutdown begins.
3053
3080
  *
3054
3081
  * @public
3055
3082
  */
3056
- destroyAsync() {
3057
- return this.beginShutdown();
3083
+ destroyAsync(options = {}) {
3084
+ return this.beginShutdown(options.deferCleanup ?? false);
3058
3085
  }
3059
3086
  };
3060
3087
 
package/dist/index.d.cts CHANGED
@@ -395,7 +395,9 @@ declare class ActionRegister<T extends ActionPayloadMap = Record<string, unknown
395
395
  private beginShutdown;
396
396
  private finalizeDestroy;
397
397
  destroy(): void;
398
- destroyAsync(): Promise<void>;
398
+ destroyAsync(options?: {
399
+ deferCleanup?: boolean;
400
+ }): Promise<void>;
399
401
  }
400
402
  //#endregion
401
403
  //#region src/action-guard.d.ts
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.cts","names":[],"sources":["../src/types.ts","../src/ActionRegister.ts","../src/action-guard.ts","../src/errors.ts","../src/execution-modes.ts"],"mappings":"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"}
1
+ {"version":3,"file":"index.d.cts","names":[],"sources":["../src/types.ts","../src/ActionRegister.ts","../src/action-guard.ts","../src/errors.ts","../src/execution-modes.ts"],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -395,7 +395,9 @@ declare class ActionRegister<T extends ActionPayloadMap = Record<string, unknown
395
395
  private beginShutdown;
396
396
  private finalizeDestroy;
397
397
  destroy(): void;
398
- destroyAsync(): Promise<void>;
398
+ destroyAsync(options?: {
399
+ deferCleanup?: boolean;
400
+ }): Promise<void>;
399
401
  }
400
402
  //#endregion
401
403
  //#region src/action-guard.d.ts
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","names":[],"sources":["../src/types.ts","../src/ActionRegister.ts","../src/action-guard.ts","../src/errors.ts","../src/execution-modes.ts"],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../src/types.ts","../src/ActionRegister.ts","../src/action-guard.ts","../src/errors.ts","../src/execution-modes.ts"],"mappings":"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"}
package/dist/index.js CHANGED
@@ -1414,7 +1414,7 @@ var ActionRegister = class {
1414
1414
  return newUnregister;
1415
1415
  } else {
1416
1416
  if (!existing) throw new Error("Internal error: existing handler should be defined in duplicate handler block");
1417
- this.log(`Handler duplicate ignored, returning existing unregister: ${String(action)}`, {
1417
+ this.log(`Handler duplicate ignored, returning no-op unregister: ${String(action)}`, {
1418
1418
  handlerId,
1419
1419
  existingPriority: existing.config.priority,
1420
1420
  newPriority: config.priority,
@@ -1422,12 +1422,7 @@ var ActionRegister = class {
1422
1422
  newBlocking: config.blocking,
1423
1423
  note: "Use replaceExisting:true to replace"
1424
1424
  }, "warn");
1425
- if (existingUnregister) return existingUnregister;
1426
- else {
1427
- const newUnregister = this.createUnregisterFunction(action, handlerId, existing);
1428
- actionUnregisterFunctions.set(handlerId, newUnregister);
1429
- return newUnregister;
1430
- }
1425
+ return () => {};
1431
1426
  }
1432
1427
  }
1433
1428
  pipeline.push(registration);
@@ -1451,7 +1446,8 @@ var ActionRegister = class {
1451
1446
  const attemptState = { count: 0 };
1452
1447
  const plan = this.resolveDispatchPlan(action, options);
1453
1448
  const hasTimingGuard = plan.debounceMs !== void 0 || plan.throttleMs !== void 0;
1454
- let observerNotified = false;
1449
+ const notifiedObservers = /* @__PURE__ */ new Set();
1450
+ const notifiedObserverOutcomes = /* @__PURE__ */ new Set();
1455
1451
  let terminalErrorReported = false;
1456
1452
  const reportTerminalError = (error) => {
1457
1453
  if (terminalErrorReported) return;
@@ -1459,9 +1455,9 @@ var ActionRegister = class {
1459
1455
  this.invokeErrorHandler(error, action, payload, options, attemptState.count);
1460
1456
  };
1461
1457
  const notifyObservers = async (event) => {
1462
- if (observerNotified) return;
1463
- observerNotified = true;
1464
- await this.executeObservers(action, plan, event);
1458
+ if (notifiedObserverOutcomes.has(event.outcome)) return;
1459
+ notifiedObserverOutcomes.add(event.outcome);
1460
+ await this.executeObservers(action, plan, event, notifiedObservers);
1465
1461
  };
1466
1462
  const pipelineOperation = async () => {
1467
1463
  const guard = plan.guards.length > 0 ? await this.executeGuardPhase(action, payload, timeoutScope.options, plan, dispatchHandlerPromises) : {
@@ -1496,6 +1492,18 @@ var ActionRegister = class {
1496
1492
  this.cleanupOneTimeHandlers(action, executedHandlers, dispatchHandlerPromises);
1497
1493
  }
1498
1494
  }, timeoutScope.options, attemptState, (result) => result.outcome === "failed", () => this.getAttemptHandlers(action, plan).length > 0, void 0, this.shouldDrainBeforeRetry(plan, timeoutScope.options) ? () => this.drainAttemptHandlers(dispatchHandlerPromises) : void 0);
1495
+ if (timeoutScope.options?.signal?.aborted) {
1496
+ if (timeoutScope.options.signal.reason instanceof ActionTimeoutError) throw timeoutScope.options.signal.reason;
1497
+ await notifyObservers({
1498
+ action: String(action),
1499
+ payload: guard.payload,
1500
+ outcome: "cancelled",
1501
+ result: void 0,
1502
+ errors: execution.errors,
1503
+ signal: timeoutScope.options.signal
1504
+ });
1505
+ return;
1506
+ }
1499
1507
  if (execution.outcome === "failed") throw execution.errors[execution.errors.length - 1]?.error ?? /* @__PURE__ */ new Error(`Action "${String(action)}" failed`);
1500
1508
  const result = this.processResults(execution.results, execution.terminated, execution.terminated ? execution.result : void 0, options?.result);
1501
1509
  await notifyObservers({
@@ -1595,7 +1603,7 @@ var ActionRegister = class {
1595
1603
  }
1596
1604
  const observedPromise = this.raceWithTimeout(observedDispatchPromise, timeoutScope, dispatchHandlerPromises).catch(async (error) => {
1597
1605
  reportTerminalError(error);
1598
- if (!observerNotified) await this.trackGlobalHandlerPromise(notifyObservers({
1606
+ this.trackGlobalHandlerPromise(notifyObservers({
1599
1607
  action: String(action),
1600
1608
  payload,
1601
1609
  outcome: "failed",
@@ -1607,7 +1615,9 @@ var ActionRegister = class {
1607
1615
  severity: "blocking"
1608
1616
  }],
1609
1617
  signal: timeoutScope.options?.signal
1610
- }));
1618
+ })).catch((observerError) => {
1619
+ this.log(`Failure observer delivery failed for ${String(action)}`, observerError, "warn");
1620
+ });
1611
1621
  throw error;
1612
1622
  });
1613
1623
  observedPromise.catch(() => {});
@@ -1955,12 +1965,18 @@ var ActionRegister = class {
1955
1965
  /** Observers run after the canonical result has been constructed. Their
1956
1966
  * failures are isolated from that immutable result; detached observers are
1957
1967
  * still tracked for registry shutdown. */
1958
- async executeObservers(action, plan, event) {
1968
+ async executeObservers(action, plan, event, notifiedObservers = /* @__PURE__ */ new Set()) {
1959
1969
  const observerEvent = this.safeSnapshotObserverEvent(event);
1970
+ const selectedObservers = [];
1960
1971
  for (const [registration, observerEntry] of this.getObservers(action, plan)) {
1972
+ if (notifiedObservers.has(registration)) continue;
1961
1973
  const successful = observerEvent.outcome === "completed" || observerEvent.outcome === "completed_with_errors";
1962
1974
  if (observerEntry.when === "success" && !successful) continue;
1963
1975
  if (observerEntry.when === "failure" && successful) continue;
1976
+ notifiedObservers.add(registration);
1977
+ selectedObservers.push([registration, observerEntry]);
1978
+ }
1979
+ for (const [registration, observerEntry] of selectedObservers) {
1964
1980
  let shouldRun = true;
1965
1981
  try {
1966
1982
  shouldRun = registration.config.condition?.(observerEvent.payload) ?? true;
@@ -2227,13 +2243,16 @@ var ActionRegister = class {
2227
2243
  this.cleanupOneTimeHandlers(action, executedHandlers, dispatchHandlerPromises);
2228
2244
  }
2229
2245
  }, timeoutScope.options, attemptState, (result) => result.outcome === "failed", () => this.getAttemptHandlers(action, plan).length > 0, retryTelemetry, this.shouldDrainBeforeRetry(plan, timeoutScope.options) ? () => this.drainAttemptHandlers(dispatchHandlerPromises) : void 0);
2230
- if (timeoutScope.options?.signal?.aborted) return {
2231
- ...rawExecution,
2232
- success: false,
2233
- aborted: true,
2234
- abortReason: typeof timeoutScope.options.signal.reason === "string" ? timeoutScope.options.signal.reason : "Action dispatch aborted by signal",
2235
- outcome: "cancelled"
2236
- };
2246
+ if (timeoutScope.options?.signal?.aborted) {
2247
+ if (timeoutScope.options.signal.reason instanceof ActionTimeoutError) throw timeoutScope.options.signal.reason;
2248
+ return {
2249
+ ...rawExecution,
2250
+ success: false,
2251
+ aborted: true,
2252
+ abortReason: typeof timeoutScope.options.signal.reason === "string" ? timeoutScope.options.signal.reason : "Action dispatch aborted by signal",
2253
+ outcome: "cancelled"
2254
+ };
2255
+ }
2237
2256
  const executionWithGuards = {
2238
2257
  ...rawExecution,
2239
2258
  handlers: [...guard.outcomes.map((outcome) => ({
@@ -2294,7 +2313,8 @@ var ActionRegister = class {
2294
2313
  timeoutScope.onTimeout((error) => queued.cancel(error));
2295
2314
  return queued.promise;
2296
2315
  };
2297
- let observerNotified = false;
2316
+ const notifiedObservers = /* @__PURE__ */ new Set();
2317
+ const notifiedObserverOutcomes = /* @__PURE__ */ new Set();
2298
2318
  let terminalErrorReported = false;
2299
2319
  const reportTerminalError = (error) => {
2300
2320
  if (terminalErrorReported) return;
@@ -2302,9 +2322,9 @@ var ActionRegister = class {
2302
2322
  this.invokeErrorHandler(error, action, payload, options, attemptState.count);
2303
2323
  };
2304
2324
  const notifyObservers = async (event) => {
2305
- if (observerNotified) return;
2306
- observerNotified = true;
2307
- await this.executeObservers(action, plan, event);
2325
+ if (notifiedObserverOutcomes.has(event.outcome)) return;
2326
+ notifiedObserverOutcomes.add(event.outcome);
2327
+ await this.executeObservers(action, plan, event, notifiedObservers);
2308
2328
  };
2309
2329
  let dispatchPromise;
2310
2330
  let observedDispatchPromise;
@@ -2362,7 +2382,7 @@ var ActionRegister = class {
2362
2382
  }
2363
2383
  const observedPromise = this.raceWithTimeout(observedDispatchPromise, timeoutScope, dispatchHandlerPromises).catch(async (error) => {
2364
2384
  reportTerminalError(error);
2365
- if (!observerNotified) await this.trackGlobalHandlerPromise(notifyObservers({
2385
+ this.trackGlobalHandlerPromise(notifyObservers({
2366
2386
  action: String(action),
2367
2387
  payload: observerPayload,
2368
2388
  outcome: "failed",
@@ -2374,7 +2394,9 @@ var ActionRegister = class {
2374
2394
  severity: "blocking"
2375
2395
  }],
2376
2396
  signal: timeoutScope.options?.signal
2377
- }));
2397
+ })).catch((observerError) => {
2398
+ this.log(`Failure observer delivery failed for ${String(action)}`, observerError, "warn");
2399
+ });
2378
2400
  throw error;
2379
2401
  });
2380
2402
  observedPromise.catch(() => {});
@@ -2614,7 +2636,7 @@ var ActionRegister = class {
2614
2636
  if (resultOptions.maxResults !== void 0 && (!Number.isSafeInteger(resultOptions.maxResults) || resultOptions.maxResults < 0)) throw new RangeError("maxResults must be a non-negative safe integer.");
2615
2637
  }
2616
2638
  processResults(results, terminated, terminationResult, resultOptions) {
2617
- if (terminated && terminationResult !== void 0) return terminationResult;
2639
+ if (terminated) return terminationResult;
2618
2640
  if (!resultOptions) return results.length > 0 ? results[results.length - 1] : void 0;
2619
2641
  if (!resultOptions.collect && !resultOptions.strategy) return;
2620
2642
  const collectedResults = results.filter((result) => result !== void 0);
@@ -2988,7 +3010,7 @@ var ActionRegister = class {
2988
3010
  cancelPendingDispatches() {
2989
3011
  this.dispatchQueue?.clear({ rejectPending: true });
2990
3012
  }
2991
- beginShutdown() {
3013
+ beginShutdown(deferCleanup = false) {
2992
3014
  if (this.destroyAsyncPromise) return this.destroyAsyncPromise;
2993
3015
  if (this.lifecycleState === "destroyed") {
2994
3016
  this.destroyAsyncPromise = Promise.resolve();
@@ -3008,7 +3030,7 @@ var ActionRegister = class {
3008
3030
  rejectPending: true,
3009
3031
  reason: shutdownError
3010
3032
  });
3011
- if (this.dispatchConstructionDepth === 0 && this.activeDispatches.size === 0 && this.activeHandlerPromises.size === 0) {
3033
+ if (!deferCleanup && this.dispatchConstructionDepth === 0 && this.activeDispatches.size === 0 && this.activeHandlerPromises.size === 0) {
3012
3034
  this.finalizeDestroy();
3013
3035
  resolveShutdown();
3014
3036
  return this.destroyAsyncPromise;
@@ -3046,13 +3068,18 @@ var ActionRegister = class {
3046
3068
  * Begin terminal shutdown and resolve after all started handlers have settled
3047
3069
  * and their registered cleanup functions have run.
3048
3070
  *
3071
+ * `deferCleanup` closes the register synchronously while deferring final
3072
+ * registered cleanup until the next microtask. This is useful for React
3073
+ * commit phases that must invalidate stale dispatchers immediately without
3074
+ * invoking user cleanup code inside the commit hook itself.
3075
+ *
3049
3076
  * Repeated calls return the same promise. New registrations and dispatches are
3050
3077
  * rejected as soon as shutdown begins.
3051
3078
  *
3052
3079
  * @public
3053
3080
  */
3054
- destroyAsync() {
3055
- return this.beginShutdown();
3081
+ destroyAsync(options = {}) {
3082
+ return this.beginShutdown(options.deferCleanup ?? false);
3056
3083
  }
3057
3084
  };
3058
3085