Skip to main content

index/classes/ListenerCleanupManager.md

Listener Cleanup Manager

Multi-stage cleanup with error isolation per listener. Ensures cleanup of one listener doesn't block cleanup of others.

Features:

  • Error isolation (one failure doesn't block others)
  • Async cleanup support (waitPromises)
  • Ordering (LIFO - last registered, first cleaned up)
  • Detailed error logging

Example​

// Test case: Multi-stage listener cleanup
const manager = new ListenerCleanupManager();
const cleaned: string[] = [];

// Register listeners with cleanup functions
manager.register('listener1', () => {
cleaned.push('1');
});
manager.register('listener2', () => {
cleaned.push('2');
});
manager.register('listener3', () => {
throw new Error('Cleanup failed for 3');
});
manager.register('listener4', () => {
cleaned.push('4');
});

// Cleanup all (error in listener3 doesn't block listener4)
await manager.cleanup();

// All listeners cleaned up despite error in listener3
console.assert(cleaned.includes('1'));
console.assert(cleaned.includes('2'));
console.assert(cleaned.includes('4'));
// Order is LIFO: 4, 3 (error), 2, 1

Since​

6.6.0

Constructors​

Constructor​

new ListenerCleanupManager(logger?): ListenerCleanupManager

Parameters​

ParameterType
logger?Logger

Returns​

ListenerCleanupManager

Accessors​

size​

Get Signature​

get size(): number

Get count of registered listeners

Returns​

number

Number of listeners awaiting cleanup

Methods​

cleanup()​

cleanup(): Promise<Error[]>

Cleanup all listeners

Errors in one listener don't prevent cleanup of others. Returns array of errors encountered during cleanup.

Returns​

Promise<Error[]>

Promise that resolves when all cleanup complete


clear()​

clear(): void

Clear all registered listeners without calling cleanup

Returns​

void


register()​

register(id, cleanup): void

Register a listener with cleanup function

Cleanup functions are called in LIFO order (last registered, first cleaned up).

Parameters​

ParameterTypeDescription
idstringUnique identifier for this listener
cleanup() => void | Promise<void>Sync or async cleanup function

Returns​

void