From 50d63c94774b6cacae78d1da03d6ca7219ff3fe9 Mon Sep 17 00:00:00 2001
From: Keita Akutsu <kakts.git@gmail.com>
Date: Fri, 25 May 2018 02:37:17 +0900
Subject: [PATCH 01/12] test: add test cases for setUnrefTimeout.

---
 test/parallel/test-timers-refresh.js | 81 ++++++++++++++++++++++++++++
 1 file changed, 81 insertions(+)

diff --git a/test/parallel/test-timers-refresh.js b/test/parallel/test-timers-refresh.js
index 2c47be8d8d15ae..85bf4298dfe57b 100644
--- a/test/parallel/test-timers-refresh.js
+++ b/test/parallel/test-timers-refresh.js
@@ -44,6 +44,87 @@ const { setUnrefTimeout } = require('internal/timers');
   strictEqual(timer.refresh(), timer);
 }
 
+// passing 3 arguments to setUnrefTimeout
+{
+  let called = false;
+  let result1 = '';
+  const inputArgs1 = 'a';
+  const timer = setUnrefTimeout(common.mustCall((args1) => {
+    called = true;
+    result1 = args1;
+  }), 1, inputArgs1);
+
+  setTimeout(common.mustCall(() => {
+    strictEqual(called, true,
+                'unref pooled timer should be returned before check');
+    strictEqual(result1, inputArgs1,
+                `result1 should be ${inputArgs1}. actual ${result1}`);
+  }), 100, inputArgs1);
+
+  strictEqual(timer.refresh(), timer);
+}
+
+// passing 4 arguments to setUnrefTimeout
+{
+  let called = false;
+  let result1 = '';
+  let result2 = '';
+  const inputArgs1 = 'a';
+  const inputArgs2 = 'b';
+  const timer = setUnrefTimeout(common.mustCall((args1, args2) => {
+    called = true;
+    result1 = args1;
+    result2 = args2;
+  }), 1, inputArgs1, inputArgs2);
+
+  setTimeout(common.mustCall(() => {
+    strictEqual(called, true,
+                'unref pooled timer should be returned before check');
+    strictEqual(result1, inputArgs1, `result1 should be ${inputArgs1}`);
+    strictEqual(result2, inputArgs2, `result2 should be ${inputArgs2}`);
+  }), 100);
+  strictEqual(timer.refresh(), timer);
+}
+
+// passing 5 arguments to setUnrefTimeout
+{
+  let called = false;
+  let result1 = '';
+  let result2 = '';
+  let result3 = '';
+  const inputArgs1 = 'a';
+  const inputArgs2 = 'b';
+  const inputArgs3 = 'c';
+  const timer = setUnrefTimeout(common.mustCall((args1, args2, args3) => {
+    called = true;
+    result1 = args1;
+    result2 = args2;
+    result3 = args3;
+  }), 1, inputArgs1, inputArgs2, inputArgs3);
+
+  setTimeout(common.mustCall(() => {
+    strictEqual(called, true,
+                'unref pooled timer should be returned before check');
+    strictEqual(result1, inputArgs1, `result1 should be ${inputArgs1}`);
+    strictEqual(result2, inputArgs2, `result2 should be ${inputArgs2}`);
+    strictEqual(result3, inputArgs3, `result3 should be ${inputArgs3}`);
+  }), 100);
+  strictEqual(timer.refresh(), timer);
+}
+
+// ERR_INVALID_CALLBACK
+{
+  // It throws ERR_INVALID_CALLBACK when first argument is not a function.
+  common.expectsError(
+    () => setUnrefTimeout(),
+    {
+      code: 'ERR_INVALID_CALLBACK',
+      type: TypeError,
+      message: 'Callback must be a function'
+    }
+  );
+}
+
 // regular timer
 {
   let called = false;

From 0822c0f93d850f1ba5469f1b46c2fff01dc76f90 Mon Sep 17 00:00:00 2001
From: Keita Akutsu <kakts.git@gmail.com>
Date: Fri, 1 Jun 2018 02:28:57 +0900
Subject: [PATCH 02/12] test: refactored some test cases for setUnrefTimeout.

---
 test/parallel/test-timers-refresh.js         | 81 --------------------
 test/parallel/test-timers-setunreftimeout.js | 71 +++++++++++++++++
 2 files changed, 71 insertions(+), 81 deletions(-)
 create mode 100644 test/parallel/test-timers-setunreftimeout.js

diff --git a/test/parallel/test-timers-refresh.js b/test/parallel/test-timers-refresh.js
index 85bf4298dfe57b..2c47be8d8d15ae 100644
--- a/test/parallel/test-timers-refresh.js
+++ b/test/parallel/test-timers-refresh.js
@@ -44,87 +44,6 @@ const { setUnrefTimeout } = require('internal/timers');
   strictEqual(timer.refresh(), timer);
 }
 
-// passing 3 arguments to setUnrefTimeout
-{
-  let called = false;
-  let result1 = '';
-  const inputArgs1 = 'a';
-  const timer = setUnrefTimeout(common.mustCall((args1) => {
-    called = true;
-    result1 = args1;
-  }), 1, inputArgs1);
-
-  setTimeout(common.mustCall(() => {
-    strictEqual(called, true,
-                'unref pooled timer should be returned before check');
-    strictEqual(result1, inputArgs1,
-                `result1 should be ${inputArgs1}. actual ${result1}`);
-  }), 100, inputArgs1);
-
-  strictEqual(timer.refresh(), timer);
-}
-
-// passing 4 arguments to setUnrefTimeout
-{
-  let called = false;
-  let result1 = '';
-  let result2 = '';
-  const inputArgs1 = 'a';
-  const inputArgs2 = 'b';
-  const timer = setUnrefTimeout(common.mustCall((args1, args2) => {
-    called = true;
-    result1 = args1;
-    result2 = args2;
-  }), 1, inputArgs1, inputArgs2);
-
-  setTimeout(common.mustCall(() => {
-    strictEqual(called, true,
-                'unref pooled timer should be returned before check');
-    strictEqual(result1, inputArgs1, `result1 should be ${inputArgs1}`);
-    strictEqual(result2, inputArgs2, `result2 should be ${inputArgs2}`);
-  }), 100);
-  strictEqual(timer.refresh(), timer);
-}
-
-// passing 5 arguments to setUnrefTimeout
-{
-  let called = false;
-  let result1 = '';
-  let result2 = '';
-  let result3 = '';
-  const inputArgs1 = 'a';
-  const inputArgs2 = 'b';
-  const inputArgs3 = 'c';
-  const timer = setUnrefTimeout(common.mustCall((args1, args2, args3) => {
-    called = true;
-    result1 = args1;
-    result2 = args2;
-    result3 = args3;
-  }), 1, inputArgs1, inputArgs2, inputArgs3);
-
-  setTimeout(common.mustCall(() => {
-    strictEqual(called, true,
-                'unref pooled timer should be returned before check');
-    strictEqual(result1, inputArgs1, `result1 should be ${inputArgs1}`);
-    strictEqual(result2, inputArgs2, `result2 should be ${inputArgs2}`);
-    strictEqual(result3, inputArgs3, `result3 should be ${inputArgs3}`);
-  }), 100);
-  strictEqual(timer.refresh(), timer);
-}
-
-// ERR_INVALID_CALLBACK
-{
-  // It throws ERR_INVALID_CALLBACK when first argument is not a function.
-  common.expectsError(
-    () => setUnrefTimeout(),
-    {
-      code: 'ERR_INVALID_CALLBACK',
-      type: TypeError,
-      message: 'Callback must be a function'
-    }
-  );
-}
-
 // regular timer
 {
   let called = false;
diff --git a/test/parallel/test-timers-setunreftimeout.js b/test/parallel/test-timers-setunreftimeout.js
new file mode 100644
index 00000000000000..093c7bf72a5c20
--- /dev/null
+++ b/test/parallel/test-timers-setunreftimeout.js
@@ -0,0 +1,71 @@
+// Flags: --expose-internals
+
+'use strict';
+
+const common = require('../common');
+
+const { strictEqual, notStrictEqual } = require('assert');
+const { setUnrefTimeout } = require('internal/timers');
+
+// ERR_INVALID_CALLBACK
+{
+  // It throws ERR_INVALID_CALLBACK when first argument is not a function.
+  common.expectsError(
+    () => setUnrefTimeout(),
+    {
+      code: 'ERR_INVALID_CALLBACK',
+      type: TypeError,
+      message: 'Callback must be a function'
+    }
+  );
+}
+
+{
+  let called = false;
+  const timer = setUnrefTimeout(common.mustCall(() => {
+    called = true;
+  }), 1);
+
+  const testTimer = setUnrefTimeout(common.mustCall(() => {
+    strictEqual(called, false, 'unref pooled timer returned before check');
+    clearTimeout(testTimer);
+  }), 1);
+
+  strictEqual(timer.refresh(), timer);
+}
+
+// test case for passing the arguments
+{
+  for (let i = 3; i <= 6; i++) {
+    let called = false;
+    let results = [];
+    let inputArgs = [];
+    // set the input argument params
+    for (let j = 0; j <= i - 3 ; j++) {
+      inputArgs.push(j);
+    }
+
+    const timer = setUnrefTimeout(common.mustCall((args1, args2, args3, args4) => {
+      called = true;
+      results.push(args1);
+      results.push(args2);
+      results.push(args3);
+      results.push(args4);
+    }), 1, inputArgs[0], inputArgs[1], inputArgs[2], inputArgs[3]);
+
+    const testTimer = setTimeout(common.mustCall(() => {
+      strictEqual(called, true,
+                  'unref pooled timer should be returned before check');
+      const maxArgsNum = 4;
+      for (let k = 0; k < maxArgsNum; k++) {
+        // checking the arguments passed to setUnrefTimeout
+        let expect = (k + 3 <= i) ? inputArgs[k] : undefined;
+        strictEqual(expect, results[k],
+                    `result ${k} should be ${inputArgs[k]}. actual ${expect}`);
+      }
+      clearTimeout(testTimer);
+    }), 100);
+
+    strictEqual(timer.refresh(), timer);
+  }
+}

From 0d639eab4ea64cacc2b933492bc6f349264baffe Mon Sep 17 00:00:00 2001
From: Keita Akutsu <kakts.git@gmail.com>
Date: Fri, 1 Jun 2018 02:41:04 +0900
Subject: [PATCH 03/12] test: deleted notStrictEqual.

---
 test/parallel/test-timers-setunreftimeout.js | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/test/parallel/test-timers-setunreftimeout.js b/test/parallel/test-timers-setunreftimeout.js
index 093c7bf72a5c20..8e0d5cbc53ac1d 100644
--- a/test/parallel/test-timers-setunreftimeout.js
+++ b/test/parallel/test-timers-setunreftimeout.js
@@ -4,7 +4,7 @@
 
 const common = require('../common');
 
-const { strictEqual, notStrictEqual } = require('assert');
+const { strictEqual } = require('assert');
 const { setUnrefTimeout } = require('internal/timers');
 
 // ERR_INVALID_CALLBACK

From 6436008a01d4f58a570ea606c8b20b4e41d746ff Mon Sep 17 00:00:00 2001
From: Keita Akutsu <kakts.git@gmail.com>
Date: Sat, 2 Jun 2018 00:23:34 +0900
Subject: [PATCH 04/12] test: refactored some test cases for setUnrefTimeout.

---
 test/parallel/test-timers-setunreftimeout.js | 32 ++++++++------------
 1 file changed, 13 insertions(+), 19 deletions(-)

diff --git a/test/parallel/test-timers-setunreftimeout.js b/test/parallel/test-timers-setunreftimeout.js
index 8e0d5cbc53ac1d..226bfee2679dca 100644
--- a/test/parallel/test-timers-setunreftimeout.js
+++ b/test/parallel/test-timers-setunreftimeout.js
@@ -21,51 +21,45 @@ const { setUnrefTimeout } = require('internal/timers');
 }
 
 {
-  let called = false;
   const timer = setUnrefTimeout(common.mustCall(() => {
-    called = true;
-  }), 1);
-
-  const testTimer = setUnrefTimeout(common.mustCall(() => {
-    strictEqual(called, false, 'unref pooled timer returned before check');
     clearTimeout(testTimer);
   }), 1);
 
-  strictEqual(timer.refresh(), timer);
+  const testTimer = setTimeout(common.mustNotCall(() => {
+  }), 1);
 }
 
 // test case for passing the arguments
 {
-  for (let i = 3; i <= 6; i++) {
-    let called = false;
+  for (let i = 0; i < 4; i++) {
     let results = [];
     let inputArgs = [];
     // set the input argument params
-    for (let j = 0; j <= i - 3 ; j++) {
+    for (let j = 0; j <= i ; j++) {
       inputArgs.push(j);
     }
 
-    const timer = setUnrefTimeout(common.mustCall((args1, args2, args3, args4) => {
-      called = true;
+    // For checking the arguments.length, callback function should not be arrow fucntion.
+    const timer = setUnrefTimeout(common.mustCall(function(args1, args2, args3, args4) {
+      // check the number of arguments passed to this callback.
+      strictEqual(arguments.length, i + 1,
+                  `arguments.length should be ${i + 1}. actual ${arguments.length}`
+      );
       results.push(args1);
       results.push(args2);
       results.push(args3);
       results.push(args4);
-    }), 1, inputArgs[0], inputArgs[1], inputArgs[2], inputArgs[3]);
+    }), 1, ...inputArgs);
 
     const testTimer = setTimeout(common.mustCall(() => {
-      strictEqual(called, true,
-                  'unref pooled timer should be returned before check');
       const maxArgsNum = 4;
       for (let k = 0; k < maxArgsNum; k++) {
-        // checking the arguments passed to setUnrefTimeout
-        let expect = (k + 3 <= i) ? inputArgs[k] : undefined;
+        // Checking the arguments passed to setUnrefTimeout
+        let expect = (k <= i) ? inputArgs[k] : undefined;
         strictEqual(expect, results[k],
                     `result ${k} should be ${inputArgs[k]}. actual ${expect}`);
       }
       clearTimeout(testTimer);
     }), 100);
-
-    strictEqual(timer.refresh(), timer);
   }
 }

From 64e15a73b8c3d83595f4176a7bbc634070a08bf1 Mon Sep 17 00:00:00 2001
From: Keita Akutsu <kakts.git@gmail.com>
Date: Sun, 3 Jun 2018 17:54:35 +0900
Subject: [PATCH 05/12] test: refactor test-timers-setunreftimeout.js

---
 test/parallel/test-timers-setunreftimeout.js | 44 +++++++++-----------
 1 file changed, 20 insertions(+), 24 deletions(-)

diff --git a/test/parallel/test-timers-setunreftimeout.js b/test/parallel/test-timers-setunreftimeout.js
index 226bfee2679dca..3952dcdb3367fc 100644
--- a/test/parallel/test-timers-setunreftimeout.js
+++ b/test/parallel/test-timers-setunreftimeout.js
@@ -20,46 +20,42 @@ const { setUnrefTimeout } = require('internal/timers');
   );
 }
 
-{
-  const timer = setUnrefTimeout(common.mustCall(() => {
-    clearTimeout(testTimer);
-  }), 1);
-
-  const testTimer = setTimeout(common.mustNotCall(() => {
-  }), 1);
-}
-
 // test case for passing the arguments
 {
   for (let i = 0; i < 4; i++) {
-    let results = [];
-    let inputArgs = [];
+    const results = [];
+    const inputArgs = [];
     // set the input argument params
-    for (let j = 0; j <= i ; j++) {
+    for (let j = 0; j <= i; j++) {
       inputArgs.push(j);
     }
 
-    // For checking the arguments.length, callback function should not be arrow fucntion.
-    const timer = setUnrefTimeout(common.mustCall(function(args1, args2, args3, args4) {
-      // check the number of arguments passed to this callback.
-      strictEqual(arguments.length, i + 1,
-                  `arguments.length should be ${i + 1}. actual ${arguments.length}`
-      );
-      results.push(args1);
-      results.push(args2);
-      results.push(args3);
-      results.push(args4);
-    }), 1, ...inputArgs);
+    // For checking the arguments.length,
+    // callback function should not be arrow fucntion.
+    const timer = setUnrefTimeout(common.mustCall(
+      function(args1, args2, args3, args4) {
+        // check the number of arguments passed to this callback.
+        strictEqual(arguments.length, i + 1,
+                    `arguments.length should be ${i + 1}.` +
+                    `actual ${arguments.length}`
+        );
+        results.push(args1);
+        results.push(args2);
+        results.push(args3);
+        results.push(args4);
+      }
+    ), 1, ...inputArgs);
 
     const testTimer = setTimeout(common.mustCall(() => {
       const maxArgsNum = 4;
       for (let k = 0; k < maxArgsNum; k++) {
         // Checking the arguments passed to setUnrefTimeout
-        let expect = (k <= i) ? inputArgs[k] : undefined;
+        const expect = (k <= i) ? inputArgs[k] : undefined;
         strictEqual(expect, results[k],
                     `result ${k} should be ${inputArgs[k]}. actual ${expect}`);
       }
       clearTimeout(testTimer);
+      clearTimeout(timer);
     }), 100);
   }
 }

From a5570d9491d2c35755ab868ff462390a6a06eb5b Mon Sep 17 00:00:00 2001
From: Keita Akutsu <kakts.git@gmail.com>
Date: Tue, 4 Sep 2018 22:04:25 +0900
Subject: [PATCH 06/12] fix: refactor
 test/parallel/test-timers-setunreftimeout.js .

---
 test/parallel/test-timers-setunreftimeout.js | 24 +++++++++-----------
 1 file changed, 11 insertions(+), 13 deletions(-)

diff --git a/test/parallel/test-timers-setunreftimeout.js b/test/parallel/test-timers-setunreftimeout.js
index 3952dcdb3367fc..af97add6db7fd6 100644
--- a/test/parallel/test-timers-setunreftimeout.js
+++ b/test/parallel/test-timers-setunreftimeout.js
@@ -7,9 +7,7 @@ const common = require('../common');
 const { strictEqual } = require('assert');
 const { setUnrefTimeout } = require('internal/timers');
 
-// ERR_INVALID_CALLBACK
 {
-  // It throws ERR_INVALID_CALLBACK when first argument is not a function.
   common.expectsError(
     () => setUnrefTimeout(),
     {
@@ -20,9 +18,10 @@ const { setUnrefTimeout } = require('internal/timers');
   );
 }
 
-// test case for passing the arguments
+// Test this if correctly passes arguments to the callback
 {
-  for (let i = 0; i < 4; i++) {
+  const maxArgsNum = 4;
+  for (let i = 0; i < maxArgsNum; i++) {
     const results = [];
     const inputArgs = [];
     // set the input argument params
@@ -33,26 +32,25 @@ const { setUnrefTimeout } = require('internal/timers');
     // For checking the arguments.length,
     // callback function should not be arrow fucntion.
     const timer = setUnrefTimeout(common.mustCall(
-      function(args1, args2, args3, args4) {
+      function(arg1, arg2, arg3, arg4) {
         // check the number of arguments passed to this callback.
         strictEqual(arguments.length, i + 1,
                     `arguments.length should be ${i + 1}.` +
                     `actual ${arguments.length}`
         );
-        results.push(args1);
-        results.push(args2);
-        results.push(args3);
-        results.push(args4);
+        results.push(arg1);
+        results.push(arg2);
+        results.push(arg3);
+        results.push(arg4);
       }
     ), 1, ...inputArgs);
 
     const testTimer = setTimeout(common.mustCall(() => {
-      const maxArgsNum = 4;
       for (let k = 0; k < maxArgsNum; k++) {
         // Checking the arguments passed to setUnrefTimeout
-        const expect = (k <= i) ? inputArgs[k] : undefined;
-        strictEqual(expect, results[k],
-                    `result ${k} should be ${inputArgs[k]}. actual ${expect}`);
+        const expected = (k <= i) ? inputArgs[k] : undefined;
+        strictEqual(expected, results[k],
+                    `result ${k} should be ${expected}. actual ${inputArgs[k]}`);
       }
       clearTimeout(testTimer);
       clearTimeout(timer);

From e756201e18c51338029664108f0948d99782d90b Mon Sep 17 00:00:00 2001
From: Keita Akutsu <kakts.git@gmail.com>
Date: Wed, 5 Sep 2018 00:35:04 +0900
Subject: [PATCH 07/12] fix: lint error in
 test/parallel/test-timers-setunreftimeout.js

---
 test/parallel/test-timers-setunreftimeout.js | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/test/parallel/test-timers-setunreftimeout.js b/test/parallel/test-timers-setunreftimeout.js
index af97add6db7fd6..a4d66c78f5c82d 100644
--- a/test/parallel/test-timers-setunreftimeout.js
+++ b/test/parallel/test-timers-setunreftimeout.js
@@ -50,7 +50,8 @@ const { setUnrefTimeout } = require('internal/timers');
         // Checking the arguments passed to setUnrefTimeout
         const expected = (k <= i) ? inputArgs[k] : undefined;
         strictEqual(expected, results[k],
-                    `result ${k} should be ${expected}. actual ${inputArgs[k]}`);
+                    `result ${k} should be ${expected}.` +
+                    `actual ${inputArgs[k]}`);
       }
       clearTimeout(testTimer);
       clearTimeout(timer);

From 90daaa95f8e613aa17b48ed08711d91f44774d02 Mon Sep 17 00:00:00 2001
From: Keita Akutsu <kakts.git@gmail.com>
Date: Tue, 18 Sep 2018 01:10:06 +0900
Subject: [PATCH 08/12] test: refactor
 test/parallel/test-timers-setunreftimeout.js

---
 test/parallel/test-timers-setunreftimeout.js | 16 +++++++---------
 1 file changed, 7 insertions(+), 9 deletions(-)

diff --git a/test/parallel/test-timers-setunreftimeout.js b/test/parallel/test-timers-setunreftimeout.js
index a4d66c78f5c82d..b6881b52b55fc2 100644
--- a/test/parallel/test-timers-setunreftimeout.js
+++ b/test/parallel/test-timers-setunreftimeout.js
@@ -1,5 +1,4 @@
 // Flags: --expose-internals
-
 'use strict';
 
 const common = require('../common');
@@ -32,16 +31,15 @@ const { setUnrefTimeout } = require('internal/timers');
     // For checking the arguments.length,
     // callback function should not be arrow fucntion.
     const timer = setUnrefTimeout(common.mustCall(
-      function(arg1, arg2, arg3, arg4) {
+      function(...args) {
         // check the number of arguments passed to this callback.
-        strictEqual(arguments.length, i + 1,
+        strictEqual(args.length, i + 1,
                     `arguments.length should be ${i + 1}.` +
-                    `actual ${arguments.length}`
+                    `actual ${args.length}`
         );
-        results.push(arg1);
-        results.push(arg2);
-        results.push(arg3);
-        results.push(arg4);
+        for (const arg of args) {
+          results.push(arg);
+        }
       }
     ), 1, ...inputArgs);
 
@@ -49,7 +47,7 @@ const { setUnrefTimeout } = require('internal/timers');
       for (let k = 0; k < maxArgsNum; k++) {
         // Checking the arguments passed to setUnrefTimeout
         const expected = (k <= i) ? inputArgs[k] : undefined;
-        strictEqual(expected, results[k],
+        strictEqual(results[k], expected,
                     `result ${k} should be ${expected}.` +
                     `actual ${inputArgs[k]}`);
       }

From b1f3a85ecb6a8de9f82388249eb896bac3132b15 Mon Sep 17 00:00:00 2001
From: Keita Akutsu <kakts.git@gmail.com>
Date: Fri, 21 Sep 2018 01:05:25 +0900
Subject: [PATCH 09/12] test: fix comment and refactor a test case in
 test/parallel/test-timers-setunreftimeout.js

---
 test/parallel/test-timers-setunreftimeout.js | 24 ++++++++------------
 1 file changed, 10 insertions(+), 14 deletions(-)

diff --git a/test/parallel/test-timers-setunreftimeout.js b/test/parallel/test-timers-setunreftimeout.js
index b6881b52b55fc2..ee3985939946fe 100644
--- a/test/parallel/test-timers-setunreftimeout.js
+++ b/test/parallel/test-timers-setunreftimeout.js
@@ -17,7 +17,7 @@ const { setUnrefTimeout } = require('internal/timers');
   );
 }
 
-// Test this if correctly passes arguments to the callback
+// Test that setUnrefTimeout correctly passes arguments to the callback
 {
   const maxArgsNum = 4;
   for (let i = 0; i < maxArgsNum; i++) {
@@ -28,20 +28,16 @@ const { setUnrefTimeout } = require('internal/timers');
       inputArgs.push(j);
     }
 
-    // For checking the arguments.length,
-    // callback function should not be arrow fucntion.
-    const timer = setUnrefTimeout(common.mustCall(
-      function(...args) {
-        // check the number of arguments passed to this callback.
-        strictEqual(args.length, i + 1,
-                    `arguments.length should be ${i + 1}.` +
-                    `actual ${args.length}`
-        );
-        for (const arg of args) {
-          results.push(arg);
-        }
+    const timer = setUnrefTimeout(common.mustCall((...args) => {
+      // check the number of arguments passed to this callback.
+      strictEqual(args.length, i + 1,
+                  `arguments.length should be ${i + 1}.` +
+                  `actual ${args.length}`
+      );
+      for (const arg of args) {
+        results.push(arg);
       }
-    ), 1, ...inputArgs);
+    }), 1, ...inputArgs);
 
     const testTimer = setTimeout(common.mustCall(() => {
       for (let k = 0; k < maxArgsNum; k++) {

From ce868dd6c3f64d389ae42f11b0c16a0d63d74cbb Mon Sep 17 00:00:00 2001
From: Keita Akutsu <kakts.git@gmail.com>
Date: Sun, 18 Nov 2018 19:31:54 +0900
Subject: [PATCH 10/12] test: refactor test case for timers.setUnrefTimeout

---
 test/parallel/test-timers-setunreftimeout.js | 16 +++++-----------
 1 file changed, 5 insertions(+), 11 deletions(-)

diff --git a/test/parallel/test-timers-setunreftimeout.js b/test/parallel/test-timers-setunreftimeout.js
index ee3985939946fe..1f69a6f131d627 100644
--- a/test/parallel/test-timers-setunreftimeout.js
+++ b/test/parallel/test-timers-setunreftimeout.js
@@ -21,7 +21,6 @@ const { setUnrefTimeout } = require('internal/timers');
 {
   const maxArgsNum = 4;
   for (let i = 0; i < maxArgsNum; i++) {
-    const results = [];
     const inputArgs = [];
     // set the input argument params
     for (let j = 0; j <= i; j++) {
@@ -34,21 +33,16 @@ const { setUnrefTimeout } = require('internal/timers');
                   `arguments.length should be ${i + 1}.` +
                   `actual ${args.length}`
       );
-      for (const arg of args) {
-        results.push(arg);
-      }
-    }), 1, ...inputArgs);
-
-    const testTimer = setTimeout(common.mustCall(() => {
       for (let k = 0; k < maxArgsNum; k++) {
         // Checking the arguments passed to setUnrefTimeout
         const expected = (k <= i) ? inputArgs[k] : undefined;
-        strictEqual(results[k], expected,
+        strictEqual(args[k], expected,
                     `result ${k} should be ${expected}.` +
-                    `actual ${inputArgs[k]}`);
+                    `actual ${args[k]}`);
       }
-      clearTimeout(testTimer);
       clearTimeout(timer);
-    }), 100);
+    }), 1, ...inputArgs);
+
+    setTimeout(common.mustCall(), 1);
   }
 }

From a92b4d8433b7b1ef416789a00c2450d5fb9f582e Mon Sep 17 00:00:00 2001
From: Keita Akutsu <kakts.git@gmail.com>
Date: Tue, 22 Oct 2019 22:11:05 +0900
Subject: [PATCH 11/12] test: capitalize the words in setunreftimeout.

---
 test/parallel/test-timers-setunreftimeout.js | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/test/parallel/test-timers-setunreftimeout.js b/test/parallel/test-timers-setunreftimeout.js
index 1f69a6f131d627..45bb24817f320d 100644
--- a/test/parallel/test-timers-setunreftimeout.js
+++ b/test/parallel/test-timers-setunreftimeout.js
@@ -22,13 +22,13 @@ const { setUnrefTimeout } = require('internal/timers');
   const maxArgsNum = 4;
   for (let i = 0; i < maxArgsNum; i++) {
     const inputArgs = [];
-    // set the input argument params
+    // Set the input argument params
     for (let j = 0; j <= i; j++) {
       inputArgs.push(j);
     }
 
     const timer = setUnrefTimeout(common.mustCall((...args) => {
-      // check the number of arguments passed to this callback.
+      // Check the number of arguments passed to this callback.
       strictEqual(args.length, i + 1,
                   `arguments.length should be ${i + 1}.` +
                   `actual ${args.length}`

From 27ebac4f93f4b8be5f393e352204ce4bc4fb07ed Mon Sep 17 00:00:00 2001
From: Keita Akutsu <kakts.git@gmail.com>
Date: Tue, 22 Oct 2019 22:44:05 +0900
Subject: [PATCH 12/12] test: fix ERR_INVALID_CALLBACK message in
 setunreftimeout.

---
 test/parallel/test-timers-setunreftimeout.js | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/test/parallel/test-timers-setunreftimeout.js b/test/parallel/test-timers-setunreftimeout.js
index 45bb24817f320d..85b681c9d02ba0 100644
--- a/test/parallel/test-timers-setunreftimeout.js
+++ b/test/parallel/test-timers-setunreftimeout.js
@@ -12,7 +12,7 @@ const { setUnrefTimeout } = require('internal/timers');
     {
       code: 'ERR_INVALID_CALLBACK',
       type: TypeError,
-      message: 'Callback must be a function'
+      message: 'Callback must be a function. Received undefined'
     }
   );
 }