summaryrefslogtreecommitdiffstats
path: root/debian/tests/test_modules/atomic-sleep/index.js
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-05-21 20:56:20 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-05-21 20:56:20 +0000
commit868522aa377a4519adb0b9f402586ab7a41b86ba (patch)
tree44e805e154a3ace9bd8dbac73843e80d296b7814 /debian/tests/test_modules/atomic-sleep/index.js
parentAdding upstream version 5.28.2+dfsg1+~cs23.11.12.3. (diff)
downloadnode-undici-868522aa377a4519adb0b9f402586ab7a41b86ba.tar.xz
node-undici-868522aa377a4519adb0b9f402586ab7a41b86ba.zip
Adding debian version 5.28.2+dfsg1+~cs23.11.12.3-6.debian/5.28.2+dfsg1+_cs23.11.12.3-6debian
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'debian/tests/test_modules/atomic-sleep/index.js')
-rw-r--r--debian/tests/test_modules/atomic-sleep/index.js38
1 files changed, 38 insertions, 0 deletions
diff --git a/debian/tests/test_modules/atomic-sleep/index.js b/debian/tests/test_modules/atomic-sleep/index.js
new file mode 100644
index 0000000..fbfc8b2
--- /dev/null
+++ b/debian/tests/test_modules/atomic-sleep/index.js
@@ -0,0 +1,38 @@
+'use strict'
+
+/* global SharedArrayBuffer, Atomics */
+
+if (typeof SharedArrayBuffer !== 'undefined' && typeof Atomics !== 'undefined') {
+ const nil = new Int32Array(new SharedArrayBuffer(4))
+
+ function sleep (ms) {
+ // also filters out NaN, non-number types, including empty strings, but allows bigints
+ const valid = ms > 0 && ms < Infinity
+ if (valid === false) {
+ if (typeof ms !== 'number' && typeof ms !== 'bigint') {
+ throw TypeError('sleep: ms must be a number')
+ }
+ throw RangeError('sleep: ms must be a number that is greater than 0 but less than Infinity')
+ }
+
+ Atomics.wait(nil, 0, 0, Number(ms))
+ }
+ module.exports = sleep
+} else {
+
+ function sleep (ms) {
+ // also filters out NaN, non-number types, including empty strings, but allows bigints
+ const valid = ms > 0 && ms < Infinity
+ if (valid === false) {
+ if (typeof ms !== 'number' && typeof ms !== 'bigint') {
+ throw TypeError('sleep: ms must be a number')
+ }
+ throw RangeError('sleep: ms must be a number that is greater than 0 but less than Infinity')
+ }
+ const target = Date.now() + Number(ms)
+ while (target > Date.now()){}
+ }
+
+ module.exports = sleep
+
+}