summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/internal/timers.js18
-rw-r--r--lib/timers.js23
2 files changed, 13 insertions, 28 deletions
diff --git a/lib/internal/timers.js b/lib/internal/timers.js
index 0c140811f8..8c1a87a65f 100644
--- a/lib/internal/timers.js
+++ b/lib/internal/timers.js
@@ -24,6 +24,7 @@ module.exports = {
async_id_symbol,
trigger_async_id_symbol,
Timeout,
+ initAsyncResource,
refreshFnSymbol,
setUnrefTimeout,
validateTimerDuration
@@ -37,6 +38,14 @@ function getTimers() {
return timers;
}
+function initAsyncResource(resource, type) {
+ const asyncId = resource[async_id_symbol] = newAsyncId();
+ const triggerAsyncId =
+ resource[trigger_async_id_symbol] = getDefaultTriggerAsyncId();
+ if (initHooksExist())
+ emitInit(asyncId, type, triggerAsyncId, resource);
+}
+
// Timer constructor function.
// The entire prototype is defined in lib/timers.js
function Timeout(callback, after, args, isRepeat, isUnrefed) {
@@ -66,14 +75,7 @@ function Timeout(callback, after, args, isRepeat, isUnrefed) {
this[unrefedSymbol] = isUnrefed;
- this[async_id_symbol] = newAsyncId();
- this[trigger_async_id_symbol] = getDefaultTriggerAsyncId();
- if (initHooksExist()) {
- emitInit(this[async_id_symbol],
- 'Timeout',
- this[trigger_async_id_symbol],
- this);
- }
+ initAsyncResource(this, 'Timeout');
}
Timeout.prototype[refreshFnSymbol] = function refresh() {
diff --git a/lib/timers.js b/lib/timers.js
index 145550b7b5..bc98718fdf 100644
--- a/lib/timers.js
+++ b/lib/timers.js
@@ -30,6 +30,7 @@ const {
async_id_symbol,
trigger_async_id_symbol,
Timeout,
+ initAsyncResource,
validateTimerDuration
} = require('internal/timers');
const internalUtil = require('internal/util');
@@ -39,12 +40,8 @@ const util = require('util');
const errors = require('internal/errors');
const debug = util.debuglog('timer');
const {
- getDefaultTriggerAsyncId,
- newAsyncId,
- initHooksExist,
destroyHooksExist,
// The needed emit*() functions.
- emitInit,
emitBefore,
emitAfter,
emitDestroy
@@ -188,14 +185,7 @@ function insert(item, unrefed, start) {
if (!item[async_id_symbol] || item._destroyed) {
item._destroyed = false;
- item[async_id_symbol] = newAsyncId();
- item[trigger_async_id_symbol] = getDefaultTriggerAsyncId();
- if (initHooksExist()) {
- emitInit(item[async_id_symbol],
- 'Timeout',
- item[trigger_async_id_symbol],
- item);
- }
+ initAsyncResource(item, 'Timeout');
}
L.append(list, item);
@@ -720,14 +710,7 @@ const Immediate = class Immediate {
this._destroyed = false;
this[kRefed] = false;
- this[async_id_symbol] = newAsyncId();
- this[trigger_async_id_symbol] = getDefaultTriggerAsyncId();
- if (initHooksExist()) {
- emitInit(this[async_id_symbol],
- 'Immediate',
- this[trigger_async_id_symbol],
- this);
- }
+ initAsyncResource(this, 'Immediate');
this.ref();
immediateInfo[kCount]++;