56 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
			
		
		
	
	
			56 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
| export default function _asyncGeneratorDelegate(inner, awaitWrap) {
 | |
|   var iter = {},
 | |
|       waiting = false;
 | |
| 
 | |
|   function pump(key, value) {
 | |
|     waiting = true;
 | |
|     value = new Promise(function (resolve) {
 | |
|       resolve(inner[key](value));
 | |
|     });
 | |
|     return {
 | |
|       done: false,
 | |
|       value: awaitWrap(value)
 | |
|     };
 | |
|   }
 | |
| 
 | |
|   ;
 | |
| 
 | |
|   if (typeof Symbol === "function" && Symbol.iterator) {
 | |
|     iter[Symbol.iterator] = function () {
 | |
|       return this;
 | |
|     };
 | |
|   }
 | |
| 
 | |
|   iter.next = function (value) {
 | |
|     if (waiting) {
 | |
|       waiting = false;
 | |
|       return value;
 | |
|     }
 | |
| 
 | |
|     return pump("next", value);
 | |
|   };
 | |
| 
 | |
|   if (typeof inner["throw"] === "function") {
 | |
|     iter["throw"] = function (value) {
 | |
|       if (waiting) {
 | |
|         waiting = false;
 | |
|         throw value;
 | |
|       }
 | |
| 
 | |
|       return pump("throw", value);
 | |
|     };
 | |
|   }
 | |
| 
 | |
|   if (typeof inner["return"] === "function") {
 | |
|     iter["return"] = function (value) {
 | |
|       if (waiting) {
 | |
|         waiting = false;
 | |
|         return value;
 | |
|       }
 | |
| 
 | |
|       return pump("return", value);
 | |
|     };
 | |
|   }
 | |
| 
 | |
|   return iter;
 | |
| } |