I'm using webdriverio and need to wait for an element to be in the viewport

So I tried

```
browser.waitUntil(async () => {
    const b = await link.isDisplayedInViewport()
    return b;
}, 5000, 'expected to be visible after 5s');

```

But somehow `waitUntil` wants a boolean not a `Promise<boolean>`

[![enter image description here](https://i.stack.imgur.com/HbVGh.png)](https://i.stack.imgur.com/HbVGh.png)

How can I fix this?

Update:

I use WebdriverIO in a NodeJs app as follows

```
const { remote } = require('webdriverio');

(async () => {
    const browser = await remote({
        logLevel: 'error',
        path: '/',
        capabilities: {
            browserName: 'chrome'
        }
    });

    await browser.url('https://example.com');

    const link = await browser.$('.special-link');
    const ok = await browser.waitUntil(async () => {
        const b = await link.isDisplayedInViewport()
        return b;
    }, 5000, 'expected to be visible after 5s');

    await link.click();

    const title = await browser.getTitle();
    console.log('Title was: ' + title);

    await browser.deleteSession();
})().catch((e) => console.error(e));

```

[source](https://webdriver.io/docs/gettingstarted.html)

In the [options](https://webdriver.io/docs/options.html) is don't see anything about with or without async/await. Furthermore I don't use a testing framework!