Por que não consigo acessar 'janela' em uma função exposeFunction () com o Puppeteer?

Eu tenho um muito simplesMarionetista script que usaexposeFunction() para executar algo dentro do Chrome sem cabeça.

(async function(){

    var log = console.log.bind(console),
        puppeteer = require('puppeteer');


    const browser = await puppeteer.launch();
    const page = await browser.newPage();

    var functionToInject = function(){
        return window.navigator.appName;
    }

    await page.exposeFunction('functionToInject', functionToInject);

    var data = await page.evaluate(async function(){
        console.log('woo I run inside a browser')
        return await functionToInject();
    });

    console.log(data);

    await browser.close();

})()

Isso falha com:

ReferenceError: window is not defined

Que se refere à função injetada. Como posso acessarwindow dentro do Chrome sem cabeça?

Eu sei que posso fazerevaluate() em vez disso, mas isso não funciona com uma função que passo dinamicamente:

(async function(){

    var log = console.log.bind(console),
        puppeteer = require('puppeteer');

    const browser = await puppeteer.launch();
    const page = await browser.newPage();

    var data = await page.evaluate(async function(){
        console.log('woo I run inside a browser')
        return window.navigator.appName;
    });

    console.log(data);

    await browser.close();

})()

questionAnswers(2)

yourAnswerToTheQuestion