@gameye/sdk
Version:
Node.js SDK for Gameye
22 lines (18 loc) • 586 B
text/typescript
export type Destructor = () => void | PromiseLike<void>;
export interface Destructable {
destroy: Destructor;
}
export type Usable<TDestructable extends Destructable> = TDestructable | PromiseLike<TDestructable>;
export async function use<TResult, TDestructable extends Destructable>(
usable: Usable<TDestructable>,
job: (destructable: TDestructable) => TResult,
): Promise<TResult> {
const destructable = await usable;
try {
const result = await job(destructable);
return result;
}
finally {
await destructable.destroy();
}
}