Concurrency
Promise: await は rejection の元の Error を送出する
await した Promise の rejection は、ラッパー例外ではなく rejection reason として受け取ります。
SourcepromiseFailures.ts
Node.js 22
export function failedOperation(error: Error): Promise<never> {
return Promise.reject(error);
}TestpromiseFailures.test.ts
Node.js 22
import assert from "node:assert/strict";
import test from "node:test";
import { failedOperation } from "../../src/async/promiseFailures.js";
test("awaitはPromiseの失敗で元のErrorを送出する", async () => {
const error = new RangeError("invalid input");
await assert.rejects(failedOperation(error), (received) => received === error);
});01Assertion
このテストで確認できること
- rejected Promise を await すると失敗する
- 同じ Error インスタンスを rejection reason として観測できる
非同期境界では rejection reason が任意の値になり得ます。アプリケーションでは Error への正規化方針を決めます。
OBSERVED RESULT
expected: await rejected → RangeError
actual: RangeError