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.