Skip to content
This repository was archived by the owner on Feb 26, 2024. It is now read-only.

Commit d94dc65

Browse files
manuelschneidermhevery
authored andcommitted
don't save handleIds for node (#736)
1 parent b5e33fd commit d94dc65

1 file changed

Lines changed: 14 additions & 3 deletions

File tree

lib/common/timers.ts

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,17 +27,28 @@ export function patchTimer(window: any, setName: string, cancelName: string, nam
2727
try {
2828
task.invoke.apply(this, arguments);
2929
} finally {
30-
delete tasksByHandleId[data.handleId];
30+
if (typeof data.handleId === 'number') {
31+
// Node returns complex objects as handleIds
32+
delete tasksByHandleId[data.handleId];
33+
}
3134
}
3235
}
3336
data.args[0] = timer;
3437
data.handleId = setNative.apply(window, data.args);
35-
tasksByHandleId[data.handleId] = task;
38+
if (typeof data.handleId === 'number') {
39+
// Node returns complex objects as handleIds -> no need to keep them around. Additionally,
40+
// this throws an
41+
// exception in older node versions and has no effect there, because of the stringified key.
42+
tasksByHandleId[data.handleId] = task;
43+
}
3644
return task;
3745
}
3846

3947
function clearTask(task: Task) {
40-
delete tasksByHandleId[(<TimerOptions>task.data).handleId];
48+
if (typeof(<TimerOptions>task.data).handleId === 'number') {
49+
// Node returns complex objects as handleIds
50+
delete tasksByHandleId[(<TimerOptions>task.data).handleId];
51+
}
4152
return clearNative((<TimerOptions>task.data).handleId);
4253
}
4354

0 commit comments

Comments
 (0)