Add new function waitFor

Isiah Meadows isiahmeadows at
Fri Nov 17 21:29:05 UTC 2017

Just FYI, I did talk a while back to one of the TC39 people previously
about the viability of encoding at least the low-level microtask
execution stuff into the spec, and they explained that for both
practical and theological reasons, there really was no way of doing it
that wouldn't require substantial changes to the HTML spec as well as
issues with other embedding use cases. (Node would actually be the
*least* affected in this area.)

As for things like `setTimeout`/etc., ECMAScript is designed for *way*
more than just browsers - it even runs on Arduino boards. Some
runtimes that are geared towards embedded stuff deliberately don't
even implement any form of dynamic evaluation, like Kinoma XS6 (ES6
runtime which also does not retain source code for
`Function.prototype.toString` for ES-defined functions), and in those
cases, you might only have a single core available in the hardware,
making async timers, especially shorter ones, very unreliable and
power-hungry to use.


Isiah Meadows
me at

Looking for web consulting? Or a new website?
Send me an email and we can get started.

On Thu, Nov 16, 2017 at 7:37 AM, Michał Wadas <michalwadas at> wrote:
> I wish we can have annex like "if host environment supports scheduling tasks
> to run after certain time, it have to expose Promise.delay method working in
> following way:".
> But it's unlikely to happen because TC39 opposes describing communication
> with outside world in spec.
> On 16 Nov 2017 1:21 pm, "Naveen Chawla" <naveen.chwl at> wrote:
>> Wouldn't it be more useful to have an async `delay(milliseconds)`
>> function, which simply takes a number (as an alternative to setTimeout),
>> instead of having to pass in a function whose code is executed and then the
>> code after it??? I have suggested that here before, but it happens to be a
>> browser spec feature thing, not a core language thing (at least not yet) -
>> since setTimeout itself is not yet in the core language, as far as I know
>> On Thu, 16 Nov 2017 at 16:50 Eugene Melnikov
>> <melnikaite.melnikaite at> wrote:
>>> It’d be great to see native implementation of `waitFor` function. This
>>> function is used a lot in test frameworks and sometimes it’s necessary to
>>> wait something via polling. The syntax should be `await
>>> waitFor(function/primitives, timeout)`. Once function in first argument
>>> return anything except `false`, `null` or `undefined` next line of code will
>>> be executed. Second argument means period of time in ms to run function from
>>> first argument. Returned value of `waitFor` will be forwarded from executed
>>> function. In case first argument if primitive the first argument will be
>>> returned after delay specified in second argument. So it will be easy to
>>> make simple delay `async waitFor(true, 1000)` instead of `await new
>>> Promise(r => setTimeout(r, 1000))`.
>>> _______________________________________________
>>> es-discuss mailing list
>>> es-discuss at
>> _______________________________________________
>> es-discuss mailing list
>> es-discuss at
> _______________________________________________
> es-discuss mailing list
> es-discuss at

More information about the es-discuss mailing list