blob: 9239e9904b010d772a485afb28d4421f5e187ca7 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
'use strict';
import isObject from 'lodash-es/isObject';
import rest from 'lodash-es/rest';
export default function asyncify(func) {
return rest(function (args) {
var callback = args.pop();
var result;
try {
result = func.apply(this, args);
} catch (e) {
return callback(e);
}
// if result is Promise object
if (isObject(result) && typeof result.then === 'function') {
result.then(function(value) {
callback(null, value);
})['catch'](function(err) {
callback(err.message ? err : new Error(err));
});
} else {
callback(null, result);
}
});
}
|