All files / promise/src rejectAfterTimeout.ts

100% Statements 4/4
100% Branches 0/0
100% Functions 3/3
100% Lines 2/2

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31                                                2x       2x    
/**
 * Creates a {@link Promise} that rejects after `ms` milliseconds with an
 * `error`.
 *
 * @example
 * Reject after 100ms
 * ```ts
 * rejectAfterTimeout(100)
 *   .then(() => console.log("then"))    // this will never be called
 *   .catch(() => console.log("catch")); // will be called after 100ms
 * ```
 *
 * @example
 * Reject after 100ms with `"err"`
 * ```ts
 * rejectAfterTimeout(100, "err")
 *   .then(() => console.log("then"))   // this will never be called
 *   .catch((err) => console.log(err)); // will be called after 100ms
 * ```
 *
 * @param ms - the number of milliseconds to wait
 * @param error - the optional error to reject with
 * @returns a {@link Promise} that rejects after `ms` milliseconds
 */
export const rejectAfterTimeout = (
  ms: number,
  error?: unknown
): Promise<never> => {
  return new Promise((_resolve, reject) => setTimeout(reject, ms, error));
};