UNPKG

open-next-cdk

Version:

Deploy a NextJS app using OpenNext packaging to serverless AWS using CDK

41 lines (40 loc) 1.25 kB
import { Readable } from "stream"; const MIN_WAIT_TIME = 1000; export async function writeRequestBody(httpRequest, request, maxContinueTimeoutMs = MIN_WAIT_TIME) { const headers = request.headers ?? {}; const expect = headers["Expect"] || headers["expect"]; let timeoutId = -1; let hasError = false; if (expect === "100-continue") { await Promise.race([ new Promise((resolve) => { timeoutId = Number(setTimeout(resolve, Math.max(MIN_WAIT_TIME, maxContinueTimeoutMs))); }), new Promise((resolve) => { httpRequest.on("continue", () => { clearTimeout(timeoutId); resolve(); }); httpRequest.on("error", () => { hasError = true; clearTimeout(timeoutId); resolve(); }); }), ]); } if (!hasError) { writeBody(httpRequest, request.body); } } function writeBody(httpRequest, body) { if (body instanceof Readable) { body.pipe(httpRequest); } else if (body) { httpRequest.end(Buffer.from(body)); } else { httpRequest.end(); } }