UNPKG

1.06 kBJavaScriptView Raw
1function _asyncGeneratorDelegate(inner, awaitWrap) {
2 var iter = {},
3 waiting = false;
4
5 function pump(key, value) {
6 waiting = true;
7 value = new Promise(function (resolve) {
8 resolve(inner[key](value));
9 });
10 return {
11 done: false,
12 value: awaitWrap(value)
13 };
14 }
15
16 ;
17
18 if (typeof Symbol === "function" && Symbol.iterator) {
19 iter[Symbol.iterator] = function () {
20 return this;
21 };
22 }
23
24 iter.next = function (value) {
25 if (waiting) {
26 waiting = false;
27 return value;
28 }
29
30 return pump("next", value);
31 };
32
33 if (typeof inner["throw"] === "function") {
34 iter["throw"] = function (value) {
35 if (waiting) {
36 waiting = false;
37 throw value;
38 }
39
40 return pump("throw", value);
41 };
42 }
43
44 if (typeof inner["return"] === "function") {
45 iter["return"] = function (value) {
46 if (waiting) {
47 waiting = false;
48 return value;
49 }
50
51 return pump("return", value);
52 };
53 }
54
55 return iter;
56}
57
58module.exports = _asyncGeneratorDelegate;
\No newline at end of file