function toWebRequestH3(/** @type {import('h3').H3Event} */ event) {
	/**
	 * @type {ReadableStream | undefined}
	 */
	let readableStream;

	const url = getRequestURL(event);
	const base = {
		// @ts-ignore Undici option
		duplex: "half",
		method: event.method,
		headers: event.headers,
	};

	if (event.node.req.body instanceof ArrayBuffer) {
		return new Request(url, {
			...base,
			body: event.node.req.body,
		});
	}

	return new Request(url, {
		...base,
		get body() {
			if (readableStream) {
				return readableStream;
			}
			readableStream = getRequestWebStream(event);
			return readableStream;
		},
	});
}
The web request utils are copied from `h3` with a few bug fixes regaring multiple access to
`readBody` and when the body is an ArrayBuffer, such as in Deno, Edge Functions, etc.

We intend to remove this section once this is upstreamed in h3.