on peut utiliser await page.waitfornavigation() en cas d'erreur "execution context was destroyed" For the request interception we can use a separate function : page.on('request', async req => { if( // block font, media, images by default [ 'font', 'media', 'image', 'other' ].includes(req.resourceType()) || // block script if we disabled js // note : this is rarely used as most websites wont send scripts when js is disables ( use_js === false && req.resourceType() === 'script' ) ) { // block request await req.abort() ; // log // console.log('blocked', req.resourceType(), req.url()) } else { await req.continue(); } }); await page.setMaxListeners(0) ; async function intercept( req ) { if( // block font, media, images by default [ 'font', 'media', 'image', 'other' ].includes(req.resourceType()) || // block script if we disabled js // note : this is rarely used as most websites wont send scripts when js is disables ( use_js === false && req.resourceType() === 'script' ) ) { // block request await req.abort() ; // log // console.log('blocked', req.resourceType(), req.url()) } else { await req.continue(); } } // build event interception page.on('request', intercept ) ; console.log(page.listenerCount("data")) // remove listener when request closes req.on('close', function(){ // console.log('closed') page.removeListener('request', intercept ); page.removeAllListeners('request'); // console.log('removed all listners') });