mirror of https://github.com/nodejs/node.git
async_hooks: deprecate the AsyncResource.bind asyncResource property
Runtime-deprecates the `asyncResource` property that is attached to the wrapper function returned by `asyncResource.bind()`. This property is not expected to align with the equivalent `asyncContext.wrap()` API in the proposed TC39 standard. PR-URL: https://github.com/nodejs/node/pull/46432 Reviewed-By: Chengzhong Wu <legendecas@gmail.com> Reviewed-By: Stephen Belanger <admin@stephenbelanger.com> Reviewed-By: Gerhard Stöbich <deb2001-github@yahoo.de> Reviewed-By: Michaël Zasso <targos@protonmail.com> Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
This commit is contained in:
parent
1118db718c
commit
9fafb0a090
|
@ -455,6 +455,11 @@ added:
|
|||
- v14.8.0
|
||||
- v12.19.0
|
||||
changes:
|
||||
- version: REPLACEME
|
||||
pr-url: https://github.com/nodejs/node/pull/46432
|
||||
description: The `asyncResource` property added to the bound function
|
||||
has been deprecated and will be removed in a future
|
||||
version.
|
||||
- version:
|
||||
- v17.8.0
|
||||
- v16.15.0
|
||||
|
@ -473,9 +478,6 @@ changes:
|
|||
|
||||
Binds the given function to the current execution context.
|
||||
|
||||
The returned function will have an `asyncResource` property referencing
|
||||
the `AsyncResource` to which the function is bound.
|
||||
|
||||
### `asyncResource.bind(fn[, thisArg])`
|
||||
|
||||
<!-- YAML
|
||||
|
@ -483,6 +485,11 @@ added:
|
|||
- v14.8.0
|
||||
- v12.19.0
|
||||
changes:
|
||||
- version: REPLACEME
|
||||
pr-url: https://github.com/nodejs/node/pull/46432
|
||||
description: The `asyncResource` property added to the bound function
|
||||
has been deprecated and will be removed in a future
|
||||
version.
|
||||
- version:
|
||||
- v17.8.0
|
||||
- v16.15.0
|
||||
|
@ -499,9 +506,6 @@ changes:
|
|||
|
||||
Binds the given function to execute to this `AsyncResource`'s scope.
|
||||
|
||||
The returned function will have an `asyncResource` property referencing
|
||||
the `AsyncResource` to which the function is bound.
|
||||
|
||||
### `asyncResource.runInAsyncScope(fn[, thisArg, ...args])`
|
||||
|
||||
<!-- YAML
|
||||
|
|
|
@ -3339,6 +3339,20 @@ In a future version of Node.js, [`message.headers`][],
|
|||
[`message.headersDistinct`][], [`message.trailers`][], and
|
||||
[`message.trailersDistinct`][] will be read-only.
|
||||
|
||||
### DEP0172: The `asyncResource` property of `AsyncResource` bound functions
|
||||
|
||||
<!-- YAML
|
||||
changes:
|
||||
- version: REPLACEME
|
||||
pr-url: https://github.com/nodejs/node/pull/46432
|
||||
description: Runtime-deprecation.
|
||||
-->
|
||||
|
||||
Type: Runtime
|
||||
|
||||
In a future version of Node.js, the `asyncResource` property will no longer
|
||||
be added when a function is bound to an `AsyncResource`.
|
||||
|
||||
[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 8247 Section 2.4]: https://www.rfc-editor.org/rfc/rfc8247#section-2.4
|
||||
|
|
|
@ -20,7 +20,10 @@ const {
|
|||
ERR_ASYNC_TYPE,
|
||||
ERR_INVALID_ASYNC_ID
|
||||
} = require('internal/errors').codes;
|
||||
const { kEmptyObject } = require('internal/util');
|
||||
const {
|
||||
deprecate,
|
||||
kEmptyObject,
|
||||
} = require('internal/util');
|
||||
const {
|
||||
validateFunction,
|
||||
validateString,
|
||||
|
@ -237,6 +240,7 @@ class AsyncResource {
|
|||
} else {
|
||||
bound = FunctionPrototypeBind(this.runInAsyncScope, this, fn, thisArg);
|
||||
}
|
||||
let self = this;
|
||||
ObjectDefineProperties(bound, {
|
||||
'length': {
|
||||
__proto__: null,
|
||||
|
@ -249,8 +253,12 @@ class AsyncResource {
|
|||
__proto__: null,
|
||||
configurable: true,
|
||||
enumerable: true,
|
||||
value: this,
|
||||
writable: true,
|
||||
get: deprecate(function() {
|
||||
return self;
|
||||
}, 'The asyncResource property on bound functions is deprecated', 'DEP0172'),
|
||||
set: deprecate(function(val) {
|
||||
self = val;
|
||||
}, 'The asyncResource property on bound functions is deprecated', 'DEP0172'),
|
||||
}
|
||||
});
|
||||
return bound;
|
||||
|
|
Loading…
Reference in New Issue