hisco / http2-client

Transparently make http request to both http1 / http2 server.
https://www.npmjs.com/package/http2-client
MIT License
33 stars 14 forks source link

RangeError: Maximum call stack size exceeded #32

Closed x066it closed 3 years ago

x066it commented 3 years ago

I'm using http2-client to parse sitemaps, some of them have about 50 nested sitemaps.

const fetch = (url, options, http) => {
    http ??= newhttp(options);
    return http
        .get(url)
        .then((response) =>
            response?.body ? xmlparser.parse(response.body) : Promise.reject("Empty response body!")
        );
};

const crawl = (url, options, http) =>
    fetch(url, options, http).then((data) =>
        haveUrlSet(data)
            ? parseUrlSet(data)
            : haveSitemapIndex(data)
            ? Promise.all(
                    parseSitemapIndex(data).map((link) => limit(() => crawl(link, options, http)))
              ).then(
                    (list) => list.flat()
              )
            : Promise.reject("Invalid sitemap")
    );

Sometimes i'm catching such an error:

RangeError: Maximum call stack size exceeded
at Arguments.values (<anonymous>)
at ClientRequest.genericStubber (/project/node_modules/http2-client/lib/request.js:128:26)
at ClientRequest.method (/project/node_modules/http2-client/lib/request.js:44:23)
at ClientRequest.genericStubber (/project/node_modules/http2-client/lib/request.js:128:26)
at ClientRequest.method (/project/node_modules/http2-client/lib/request.js:44:23)
at ClientRequest.genericStubber (/project/node_modules/http2-client/lib/request.js:128:26)
at ClientRequest.method (/project/node_modules/http2-client/lib/request.js:44:23)
at ClientRequest.genericStubber (/project/node_modules/http2-client/lib/request.js:128:26)
at ClientRequest.method (/project/node_modules/http2-client/lib/request.js:44:23)
at ClientRequest.genericStubber (/project/node_modules/http2-client/lib/request.js:128:26)
at ClientRequest.method (/project/node_modules/http2-client/lib/request.js:44:23)
at ClientRequest.genericStubber (/project/node_modules/http2-client/lib/request.js:128:26)
at ClientRequest.method (/project/node_modules/http2-client/lib/request.js:44:23)
at ClientRequest.genericStubber (/project/node_modules/http2-client/lib/request.js:128:26)
at ClientRequest.method (/project/node_modules/http2-client/lib/request.js:44:23)
at ClientRequest.genericStubber (/project/node_modules/http2-client/lib/request.js:128:26)