Using axios alone from node.js would be faster and more reliable than using puppeteer to do so (unless you absolutely must use puppeteer for whatever reason).
Also, use networkidle2 to make sure the page is fully loaded before the download takes place.