Signed-off-by: Alex A. Naanou <alex.nanou@gmail.com>
This commit is contained in:
Alex A. Naanou 2023-02-07 21:40:36 +03:00
parent ca4983c630
commit 8c2220d13a
3 changed files with 30 additions and 20 deletions

View File

@ -851,33 +851,29 @@ object.Constructor('IterablePromise', Promise, {
// NOTE: this is needed for self-resolve...
writable: true,
})
// handle promise state...
try{
var res = obj.__unpack(list)
}catch(err){
promise.reject(err) }
res instanceof Promise ?
res
.then(function(list){
promise.resolve(list) })
.catch(promise.reject)
: promise.resolve(res)
// XXX EXPEREMENTAL
// XXX do we handle errors here???
// self-resolve state...
list instanceof Promise ?
list.then(function(list){
obj.__packed = list })
/*/ XXX use selfResolve(..)
: selfResolve(list) }
/*/
: list.forEach(function(elem, i){
if(res instanceof Promise){
res.then(
function(list){
promise.resolve(list)
// self-resolve...
obj.__packed = list },
handleError)
} else {
promise.resolve(res)
// self-resolve...
res.forEach(function(elem, i){
elem instanceof Promise
&& elem.then(function(elem){
lst = obj.__packed.slice()
lst[i] = elem
obj.__packed = lst }) }) }
//*/
obj.__packed = lst }) }) } }
return obj },
})

View File

@ -1,6 +1,6 @@
{
"name": "ig-types",
"version": "6.25.0",
"version": "6.25.1",
"description": "Generic JavaScript types and type extensions...",
"main": "main.js",
"scripts": {

16
test.js
View File

@ -495,7 +495,21 @@ var cases = test.Cases({
function(err){
return 'done' })
== 'done',
`.${iter}(..): late onerror(..)`) }
`.${iter}(..): late onerror(..)`)
assert(
await Promise[iter](
(function*(){
yield* [1,2,3]
throw 'ERROR' })(),
function(e){
if(e == 4){
throw 'ERROR' }
return e },
function(err){
return 'done' })
== 'done',
`.${iter}(..): late onerror(..)`)
}
},
// Date.js