UNPKG

promise-synchronizer

Version:
51 lines (39 loc) 886 B
'use strict' function _interopDefault(ex) { return ex && typeof ex === 'object' && 'default' in ex ? ex['default'] : ex } var deasync = require('deasync') var isPromise = _interopDefault(require('p-is-promise')) function syncFunction(asyncFunction) { return function (...functionArguments) { return sync(asyncFunction(...functionArguments)) } } function sync(promise) { if (typeof promise === 'function') { return syncFunction(promise) } if (!isPromise(promise)) { return promise } let resolved = false let rejected = false let result let error promise.then( (value) => { resolved = true result = value }, (rejectedError) => { rejected = true error = rejectedError } ) deasync.loopWhile(() => !resolved && !rejected) if (rejected) { throw error } return result } module.exports = sync