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
|
- v14.8.0
|
||||||
- v12.19.0
|
- v12.19.0
|
||||||
changes:
|
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:
|
- version:
|
||||||
- v17.8.0
|
- v17.8.0
|
||||||
- v16.15.0
|
- v16.15.0
|
||||||
|
@ -473,9 +478,6 @@ changes:
|
||||||
|
|
||||||
Binds the given function to the current execution context.
|
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])`
|
### `asyncResource.bind(fn[, thisArg])`
|
||||||
|
|
||||||
<!-- YAML
|
<!-- YAML
|
||||||
|
@ -483,6 +485,11 @@ added:
|
||||||
- v14.8.0
|
- v14.8.0
|
||||||
- v12.19.0
|
- v12.19.0
|
||||||
changes:
|
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:
|
- version:
|
||||||
- v17.8.0
|
- v17.8.0
|
||||||
- v16.15.0
|
- v16.15.0
|
||||||
|
@ -499,9 +506,6 @@ changes:
|
||||||
|
|
||||||
Binds the given function to execute to this `AsyncResource`'s scope.
|
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])`
|
### `asyncResource.runInAsyncScope(fn[, thisArg, ...args])`
|
||||||
|
|
||||||
<!-- YAML
|
<!-- YAML
|
||||||
|
|
|
@ -3339,6 +3339,20 @@ In a future version of Node.js, [`message.headers`][],
|
||||||
[`message.headersDistinct`][], [`message.trailers`][], and
|
[`message.headersDistinct`][], [`message.trailers`][], and
|
||||||
[`message.trailersDistinct`][] will be read-only.
|
[`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
|
[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
|
||||||
[RFC 8247 Section 2.4]: https://www.rfc-editor.org/rfc/rfc8247#section-2.4
|
[RFC 8247 Section 2.4]: https://www.rfc-editor.org/rfc/rfc8247#section-2.4
|
||||||
|
|
|
@ -20,7 +20,10 @@ const {
|
||||||
ERR_ASYNC_TYPE,
|
ERR_ASYNC_TYPE,
|
||||||
ERR_INVALID_ASYNC_ID
|
ERR_INVALID_ASYNC_ID
|
||||||
} = require('internal/errors').codes;
|
} = require('internal/errors').codes;
|
||||||
const { kEmptyObject } = require('internal/util');
|
const {
|
||||||
|
deprecate,
|
||||||
|
kEmptyObject,
|
||||||
|
} = require('internal/util');
|
||||||
const {
|
const {
|
||||||
validateFunction,
|
validateFunction,
|
||||||
validateString,
|
validateString,
|
||||||
|
@ -237,6 +240,7 @@ class AsyncResource {
|
||||||
} else {
|
} else {
|
||||||
bound = FunctionPrototypeBind(this.runInAsyncScope, this, fn, thisArg);
|
bound = FunctionPrototypeBind(this.runInAsyncScope, this, fn, thisArg);
|
||||||
}
|
}
|
||||||
|
let self = this;
|
||||||
ObjectDefineProperties(bound, {
|
ObjectDefineProperties(bound, {
|
||||||
'length': {
|
'length': {
|
||||||
__proto__: null,
|
__proto__: null,
|
||||||
|
@ -249,8 +253,12 @@ class AsyncResource {
|
||||||
__proto__: null,
|
__proto__: null,
|
||||||
configurable: true,
|
configurable: true,
|
||||||
enumerable: true,
|
enumerable: true,
|
||||||
value: this,
|
get: deprecate(function() {
|
||||||
writable: true,
|
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;
|
return bound;
|
||||||
|
|
Loading…
Reference in New Issue