실제로 babel 태워보면 generator(function*) 으로 변환하더군요.
function _asyncToGenerator(fn) {
return function() {
var gen = fn.apply(this, arguments);
return new Promise(function(resolve, reject) {
function step(key, arg) {
try {
var info = gen[key](arg);
var value = info.value;
} catch (error) {
reject(error);
return;
}
if (info.done) {
resolve(value);
} else {
return Promise.resolve(value).then(function(value) {
step("next", value);
}, function(err) {
step("throw", err);
});
}
}
return step("next");
});
};
}
요런 녀석이 내부적으로 step 이란 놈을 재귀호출 하고 있습니다.
저 step 으로 돌 놈들 즉, _asyncToGenerator 인자의 길이 만큼 돌텐데 저래도 메모리가 괜찮나 모르겠습니다;;