diff --git a/spec.html b/spec.html index 78978a5..99e289a 100644 --- a/spec.html +++ b/spec.html @@ -307,6 +307,20 @@

IfAbruptCloseAsyncIterator ( _value_, _iteratorRecord_ )

1. Else if _value_ is a Completion Record, set _value_ to _value_.[[Value]]. + + +

+ AwaitNonPrimitive ( + _value_: an ECMAScript language value, + ): either a normal completion containing an ECMAScript language value or a throw completion +

+
+
+ + 1. If _value_ is an Object, return ? Await(_value_). + 1. Else, return _value_. + +
@@ -848,7 +862,7 @@

AsyncIterator.prototype.map ( _mapper_ )

1. Let _value_ be ? IteratorValue(_next_). 1. Let _mapped_ be Completion(Call(_mapper_, *undefined*, « _value_, 𝔽(_counter_) »)). 1. IfAbruptCloseAsyncIterator(_mapped_, _iterated_). - 1. Set _mapped_ to Completion(Await(_mapped_)). + 1. Set _mapped_ to Completion(AwaitNonPrimitive(_mapped_)). 1. IfAbruptCloseAsyncIterator(_mapped_, _iterated_). 1. Let _completion_ be Completion(Yield(_mapped_)). 1. IfAbruptCloseAsyncIterator(_completion_, _iterated_). @@ -871,7 +885,7 @@

AsyncIterator.prototype.filter ( _filterer_ )

1. Let _value_ be ? IteratorValue(_next_). 1. Let _selected_ be Completion(Call(_filterer_, *undefined*, « _value_, 𝔽(_counter_) »)). 1. IfAbruptCloseAsyncIterator(_selected_, _iterated_). - 1. Set _selected_ to Completion(Await(_selected_)). + 1. Set _selected_ to Completion(AwaitNonPrimitive(_selected_)). 1. IfAbruptCloseAsyncIterator(_selected_, _iterated_). 1. If ToBoolean(_selected_) is *true*, then 1. Let _completion_ be Completion(Yield(_value_)). @@ -944,7 +958,7 @@

AsyncIterator.prototype.flatMap ( _mapper_ )

1. Let _value_ be ? IteratorValue(_next_). 1. Let _mapped_ be Completion(Call(_mapper_, *undefined*, « _value_, 𝔽(_counter_) »)). 1. IfAbruptCloseAsyncIterator(_mapped_, _iterated_). - 1. Set _mapped_ to Completion(Await(_mapped_)). + 1. Set _mapped_ to Completion(AwaitNonPrimitive(_mapped_)). 1. IfAbruptCloseAsyncIterator(_mapped_, _iterated_). 1. Let _innerIterator_ be Completion(GetIteratorFlattenable(_mapped_, ~async~)). 1. IfAbruptCloseAsyncIterator(_innerIterator_, _iterated_). @@ -993,7 +1007,7 @@

AsyncIterator.prototype.reduce ( _reducer_ [ , _initialValue_ ] )

1. Let _value_ be ? IteratorValue(_next_). 1. Let _result_ be Completion(Call(_reducer_, *undefined*, « _accumulator_, _value_, 𝔽(_counter_) »)). 1. IfAbruptCloseAsyncIterator(_result_, _iterated_). - 1. Set _result_ to Await(_result_). + 1. Set _result_ to Completion(AwaitNonPrimitive(_result_)). 1. IfAbruptCloseAsyncIterator(_result_, _iterated_). 1. Set _accumulator_ to _result_. 1. Set _counter_ to _counter_ + 1. @@ -1027,7 +1041,7 @@

AsyncIterator.prototype.forEach ( _fn_ )

1. Let _value_ be ? IteratorValue(_next_). 1. Let _r_ be Completion(Call(_fn_, *undefined*, « _value_, 𝔽(_counter_) »)). 1. IfAbruptCloseAsyncIterator(_r_, _iterated_). - 1. Set _r_ to Await(r). + 1. Set _r_ to Completion(AwaitNonPrimitive(r)). 1. IfAbruptCloseAsyncIterator(_r_, _iterated_). 1. Set _counter_ to _counter_ + 1. @@ -1046,7 +1060,7 @@

AsyncIterator.prototype.some ( _fn_ )

1. Let _value_ be ? IteratorValue(_next_). 1. Let _result_ be Completion(Call(_fn_, *undefined*, « _value_, 𝔽(_counter_) »)). 1. IfAbruptCloseAsyncIterator(_result_, _iterated_). - 1. Set _result_ to Await(_result_). + 1. Set _result_ to Completion(AwaitNonPrimitive(_result_)). 1. IfAbruptCloseAsyncIterator(_result_, _iterated_). 1. If ToBoolean(_result_) is *true*, return ? AsyncIteratorClose(_iterated_, NormalCompletion(*true*)). 1. Set _counter_ to _counter_ + 1. @@ -1066,7 +1080,7 @@

AsyncIterator.prototype.every ( _fn_ )

1. Let _value_ be ? IteratorValue(_next_). 1. Let _result_ be Completion(Call(_fn_, *undefined*, « _value_, 𝔽(_counter_) »)). 1. IfAbruptCloseAsyncIterator(_result_, _iterated_). - 1. Set _result_ to Await(_result_). + 1. Set _result_ to Completion(AwaitNonPrimitive(_result_)). 1. IfAbruptCloseAsyncIterator(_result_, _iterated_). 1. If ToBoolean(_result_) is *false*, return ? AsyncIteratorClose(_iterated_, NormalCompletion(*false*)). 1. Set _counter_ to _counter_ + 1. @@ -1086,7 +1100,7 @@

AsyncIterator.prototype.find ( _fn_ )

1. Let _value_ be ? IteratorValue(_next_). 1. Let _result_ be Completion(Call(_fn_, *undefined*, « _value_, 𝔽(_counter_) »)). 1. IfAbruptCloseAsyncIterator(_result_, _iterated_). - 1. Set _result_ to Await(_result_). + 1. Set _result_ to Completion(AwaitNonPrimitive(_result_)). 1. IfAbruptCloseAsyncIterator(_result_, _iterated_). 1. If ToBoolean(_result_) is *true*, return ? AsyncIteratorClose(_iterated_, NormalCompletion(_value_)). 1. Set _counter_ to _counter_ + 1.