summaryrefslogtreecommitdiff
path: root/lib/internal/promiseCallback.js
diff options
context:
space:
mode:
Diffstat (limited to 'lib/internal/promiseCallback.js')
-rw-r--r--lib/internal/promiseCallback.js19
1 files changed, 19 insertions, 0 deletions
diff --git a/lib/internal/promiseCallback.js b/lib/internal/promiseCallback.js
new file mode 100644
index 0000000..685dd7a
--- /dev/null
+++ b/lib/internal/promiseCallback.js
@@ -0,0 +1,19 @@
+const PROMISE_SYMBOL = Symbol('promiseCallback')
+
+function promiseCallback () {
+ let resolve, reject
+ function callback (err, ...args) {
+ if (err) return reject(err)
+ resolve(args.length > 1 ? args : args[0])
+ }
+
+ callback[PROMISE_SYMBOL] = new Promise((res, rej) => {
+ resolve = res,
+ reject = rej
+ })
+
+ return callback
+}
+
+
+export { promiseCallback, PROMISE_SYMBOL }