Re: [w3c/gamepad] GamepadHapticActuator.playEffect() algorithm seems wrong with regards to `[[playingEffectPromise]]` (Issue #179)

We should also watch out for the interaction with the `reset()` algorithm:
https://w3c.github.io/gamepad/extensions.html#dom-gamepadhapticactuator-reset

The `reset()` algorithm, at step 3, will check synchronously if `[[playingEffectPromise]]` is undefined. If not undefined, it will *queue a task* to resolve `this.[[playingEffectPromise]]` and set it to undefined.

However, since `playEffect()` may update `this.[[playingEffectPromise]]` synchronously, it means that the task queued by `reset()` may clear a `[[playingEffectPromise]]` that is not the same one that was checked before queueing the task.

-- 
Reply to this email directly or view it on GitHub:
https://github.com/w3c/gamepad/issues/179#issuecomment-1379282451
You are receiving this because you are subscribed to this thread.

Message ID: <w3c/gamepad/issues/179/1379282451@github.com>

Received on Wednesday, 11 January 2023 18:04:41 UTC