Interactive Lab

Explicit Resource Management & Promise Resolvers

Coordinate scope-bound disposables with TS6 "using" and decouple async pipelines with Promise.withResolvers.

resource-lifecycle.ts
// 1. Explicit Resource Management (TS6 / ES2026)
class StreamSession implements Disposable {
  public id = crypto.randomUUID().slice(0, 8);
  public active = true;

  [Symbol.dispose]() {
    this.active = false; // Auto-teardown when exiting block scope
  }
}

// 2. Promise.withResolvers() for decoupled async flows
const { promise, resolve, reject } = Promise.withResolvers<string>();

function triggerExternalEvent(data: string) {
  resolve(data); // Externally fulfill without wrapping in new Promise()
}

Key Mechanics

  • using (Symbol.dispose): Scoped deterministic teardown for sockets, locks, and buffers.
  • Promise.withResolvers(): Direct access to resolve/reject capabilities without wrapper closures.
Scoped Resource Allocator
Idle
No active resource scopes initialized.
Promise.withResolvers Controller Status: idle
Buffer:

Idle