|
4 | 4 | var call = require('../internals/function-call'); |
5 | 5 | var aCallable = require('../internals/a-callable'); |
6 | 6 | var anObject = require('../internals/an-object'); |
| 7 | +var isObject = require('../internals/is-object'); |
7 | 8 | var doesNotExceedSafeInteger = require('../internals/does-not-exceed-safe-integer'); |
8 | 9 | var getBuiltIn = require('../internals/get-built-in'); |
9 | 10 | var getIteratorDirect = require('../internals/get-iterator-direct'); |
@@ -44,20 +45,25 @@ var createMethod = function (TYPE) { |
44 | 45 | var value = step.value; |
45 | 46 | try { |
46 | 47 | if (MAPPING) { |
47 | | - Promise.resolve(fn(value, counter)).then(function (result) { |
| 48 | + var result = fn(value, counter); |
| 49 | + |
| 50 | + var handler = function ($result) { |
48 | 51 | if (IS_FOR_EACH) { |
49 | 52 | loop(); |
50 | 53 | } else if (IS_EVERY) { |
51 | | - result ? loop() : closeAsyncIteration(iterator, resolve, false, reject); |
| 54 | + $result ? loop() : closeAsyncIteration(iterator, resolve, false, reject); |
52 | 55 | } else if (IS_TO_ARRAY) { |
53 | 56 | try { |
54 | | - target[counter++] = result; |
| 57 | + target[counter++] = $result; |
55 | 58 | loop(); |
56 | 59 | } catch (error4) { ifAbruptCloseAsyncIterator(error4); } |
57 | 60 | } else { |
58 | | - result ? closeAsyncIteration(iterator, resolve, IS_SOME || value, reject) : loop(); |
| 61 | + $result ? closeAsyncIteration(iterator, resolve, IS_SOME || value, reject) : loop(); |
59 | 62 | } |
60 | | - }, ifAbruptCloseAsyncIterator); |
| 63 | + }; |
| 64 | + |
| 65 | + if (isObject(result)) Promise.resolve(result).then(handler, ifAbruptCloseAsyncIterator); |
| 66 | + else handler(result); |
61 | 67 | } else { |
62 | 68 | target[counter++] = value; |
63 | 69 | loop(); |
|
0 commit comments