/
index.js
70 lines (56 loc) · 1.25 KB
/
index.js
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
var C = require('../../src');
var Q = require('q');
var PromiseClause = C.shape({
req: {
then: C.fclause({
args: C.cat(
C.or(
C.isNull, C.isUndefined,
C.fclause({
args: C.cat('message', C.isStr),
ret: C.isUndefined,
})
),
C.zeroOrOne(
C.or(
C.isNull, C.isUndefined,
C.fclause({
args: C.cat('rejError', C.any),
}))
)
),
ret: C.delayed(() => PromiseClause), //recursive
}),
},
});
var GetHelloClause = C.fclause({
args: C.cat(),
ret: PromiseClause,
});
var getHello = GetHelloClause.instrument(__getHello);
getHello().then(function(m) {
console.log(m);
});
var getHelloBad = GetHelloClause.instrument(__getHelloBad);
// TODO: fix this
// this will throw an error
getHelloBad().then(function(m) {
console.log(m);
}).catch(function (e) {
console.error(e);
});
// // // // // // // // // //
function __getHello() {
var deferred = Q.defer();
setTimeout(function() {
deferred.resolve('hello');
});
return deferred.promise;
}
function __getHelloBad() {
var deferred = Q.defer();
setTimeout(function() {
deferred.resolve(123);
});
return deferred.promise;
}