feat(soak): core types + Deferred primitive
Establishes the Scenario/Session/Logger/DashboardReporter contracts the rest of the harness builds on. Deferred is the building block for RoomCoordinator's host→joiners handoff. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
20
tests/soak/core/deferred.ts
Normal file
20
tests/soak/core/deferred.ts
Normal file
@@ -0,0 +1,20 @@
|
||||
/**
|
||||
* Promise deferred primitive — lets external code resolve or reject
|
||||
* a promise. Used by RoomCoordinator for host→joiners handoff.
|
||||
*/
|
||||
|
||||
export interface Deferred<T> {
|
||||
promise: Promise<T>;
|
||||
resolve(value: T): void;
|
||||
reject(error: unknown): void;
|
||||
}
|
||||
|
||||
export function deferred<T>(): Deferred<T> {
|
||||
let resolve!: (value: T) => void;
|
||||
let reject!: (error: unknown) => void;
|
||||
const promise = new Promise<T>((res, rej) => {
|
||||
resolve = res;
|
||||
reject = rej;
|
||||
});
|
||||
return { promise, resolve, reject };
|
||||
}
|
||||
Reference in New Issue
Block a user