Skip to content

Instantly share code, notes, and snippets.

@genki
Created January 13, 2024 12:16
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save genki/4d7b5aea1977b8f72bba928e4bfcba41 to your computer and use it in GitHub Desktop.
Save genki/4d7b5aea1977b8f72bba928e4bfcba41 to your computer and use it in GitHub Desktop.
export const waiter: {
<T, R, A extends any[]>(
w:Waitable<T>, done:(x:T, ...args:A) => Promise<R>|R
): (...args:A) => Promise<R>;
<R, A extends any[], T=void|undefined>(
w:Waitable<T>, done:(...args:A) => Promise<R>|R
): (...args:A) => Promise<R>;
} = <T, R, A extends any[]>(w:Waitable<T>, done:{
(x:T, ...args:A):Promise<R>|R;
(...args:A):Promise<R>|R;
}) => async (...args:A) => await w.wait(
x => x === undefined ? done(...args) : done(x, ...args)
);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment