process: deprecate multipleResolves

Deprecate the process multipleResolves event to detect when a promise is
resolved more than once because it never really worked.

Fixes: https://github.com/nodejs/node/issues/41554

PR-URL: https://github.com/nodejs/node/pull/41872
Reviewed-By: Darshan Sen <raisinten@gmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Juan José Arboleda <soyjuanarbol@gmail.com>
Reviewed-By: Mestery <mestery@protonmail.com>
This commit is contained in:
Benjamin Gruenbaum 2022-02-08 16:24:59 +02:00 committed by GitHub
parent cde35ea51b
commit 1f17592116
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 20 additions and 0 deletions

View File

@ -3070,6 +3070,20 @@ Type: End-of-Life
This error code was removed due to adding more confusion to This error code was removed due to adding more confusion to
the errors used for value type validation. the errors used for value type validation.
### DEPXXXX: `process.on('multipleResolves', handler)`
<!-- YAML
changes:
- version: REPLACEME
pr-url: https://github.com/nodejs/node/pull/41872
description: Documentation-only deprecation.
-->
Type: Documentation-only
This event was deprecated because it did not work with V8 promise combinators
which diminished its usefulness.
[Legacy URL API]: url.md#legacy-url-api [Legacy URL API]: url.md#legacy-url-api
[NIST SP 800-38D]: https://nvlpubs.nist.gov/nistpubs/Legacy/SP/nistspecialpublication800-38d.pdf [NIST SP 800-38D]: https://nvlpubs.nist.gov/nistpubs/Legacy/SP/nistspecialpublication800-38d.pdf
[RFC 6066]: https://tools.ietf.org/html/rfc6066#section-3 [RFC 6066]: https://tools.ietf.org/html/rfc6066#section-3

View File

@ -181,8 +181,11 @@ See [Advanced serialization for `child_process`][] for more details.
<!-- YAML <!-- YAML
added: v10.12.0 added: v10.12.0
deprecated: REPLACEME
--> -->
> Stability: 0 - Deprecated
* `type` {string} The resolution type. One of `'resolve'` or `'reject'`. * `type` {string} The resolution type. One of `'resolve'` or `'reject'`.
* `promise` {Promise} The promise that resolved or rejected more than once. * `promise` {Promise} The promise that resolved or rejected more than once.
* `value` {any} The value with which the promise was either resolved or * `value` {any} The value with which the promise was either resolved or
@ -200,6 +203,9 @@ This is useful for tracking potential errors in an application while using the
the occurrence of this event does not necessarily indicate an error. For the occurrence of this event does not necessarily indicate an error. For
example, [`Promise.race()`][] can trigger a `'multipleResolves'` event. example, [`Promise.race()`][] can trigger a `'multipleResolves'` event.
Because of the unreliability of the event in cases like the
[`Promise.race()`][] example above it has been deprecated.
```mjs ```mjs
import process from 'process'; import process from 'process';