DEV Community


Discussion on: Would it make sense to have "Symbol.promise" as standard JavaScript Symbol?

noseratio profile image
Andrew Nosenko Author

It never occurred to me I could use a thenable with Promise.resolve and Promise.race etc. Today I've learnt something new, thanks to you! It really does work:

export {}

class Thenable {

  constructor(ms) {
    this.#promise = new Promise(r => setTimeout(r, ms)); 

  then(...a) { return this.#promise.then(...a); }

await Promise.resolve(new Thenable(2000));

await Promise.race([new Thenable(2000)]);
Enter fullscreen mode Exit fullscreen mode

I don't know enough about the mechanics and overhead of await to comment on that.

I could recommend this read on Faster async functions and promises.