@@ -4,7 +4,6 @@ import tmpdir from '../common/tmpdir.js';
44import assert from 'node:assert' ;
55import { writeFileSync } from 'node:fs' ;
66import { createRequire } from 'node:module' ;
7- import { setTimeout as sleep } from 'node:timers/promises' ;
87
98if ( common . isIBMi )
109 common . skip ( 'IBMi does not support `fs.watch()`' ) ;
@@ -15,16 +14,26 @@ const originalSetTimeout = timers.setTimeout;
1514const originalClearTimeout = timers . clearTimeout ;
1615const { promise, resolve } = Promise . withResolvers ( ) ;
1716let debounceTimer ;
17+ let debounceTimerCallback ;
1818let debounceTimerCleared = false ;
1919
2020timers . setTimeout = function ( fn , delay , ...args ) {
21- const timer = originalSetTimeout ( fn , delay , ...args ) ;
2221 if ( delay === 1000 ) {
22+ const timer = {
23+ __proto__ : null ,
24+ ref ( ) { return this ; } ,
25+ unref ( ) { return this ; } ,
26+ } ;
2327 debounceTimer = timer ;
24- debounceTimer . ref ( ) ;
28+ debounceTimerCallback = ( ) => {
29+ if ( ! debounceTimerCleared ) {
30+ fn ( ...args ) ;
31+ }
32+ } ;
2533 resolve ( ) ;
34+ return timer ;
2635 }
27- return timer ;
36+ return originalSetTimeout ( fn , delay , ... args ) ;
2837} ;
2938
3039timers . clearTimeout = function ( timer ) {
5160
5261 watcher . clear ( ) ;
5362 assert . strictEqual ( debounceTimerCleared , true ) ;
54- await sleep ( 1100 ) ;
63+ debounceTimerCallback ( ) ;
5564} finally {
5665 timers . setTimeout = originalSetTimeout ;
5766 timers . clearTimeout = originalClearTimeout ;
0 commit comments