There is a built-in option for that:
await page.goto('https://www.digg.com/', {"waitUntil" : "networkidle0"});
networkidle0
– consider navigation to be finished when there are no more than 0 network connections for at least 500 ms
networkidle2
– consider navigation to be finished when there are no more than 2 network connections for at least 500 ms.
Of course it won’t work if you’re working with endless-scrolling-single-page-applications like Twitter.
Puppeteer GitHub issue #1552 provides explanation for the motivation behind networkidle2
.