captureSize = async data => {
	let size = 0;
	let lazySize = 0;
	for (const b of data) {
		if (Buffer.isBuffer(b)) {
			size += b.length;
		} else if (typeof b === "function") {
			const i = lazySizes.length;
			lazySizes.push(undefined);
			const r = await captureSize(await b());
			lazySize += r.size + r.lazySize;
			lazySizes[i] = r;
		}
	}
	return { size, lazySize };
}
@param {(Buffer | (() => Promise<Buffer[]>))[]} data data
@returns {Promise<SizeInfo>} size info