diff --git a/spec.html b/spec.html index 6b29ba6..3135130 100644 --- a/spec.html +++ b/spec.html @@ -643,8 +643,11 @@

Iterator.prototype.flatMap ( _mapper_ )

1. Else, 1. Let _innerValue_ be Completion(IteratorValue(_innerNext_)). 1. IfAbruptCloseIterator(_innerValue_, _iterated_). - 1. Let _yielded_ be Completion(Yield(_innerValue_)). - 1. IfAbruptCloseIterator(_yielded_, _iterated_). + 1. Let _completion_ be Completion(Yield(_innerValue_)). + 1. If _completion_ is an abrupt completion, then + 1. Let _backupCompletion_ be Completion(IteratorClose(_innerIterator_, _completion_)). + 1. IfAbruptCloseIterator(_backupCompletion_, _iterated_). + 1. Return ? IteratorClose(_completion_, _iterated_). 1. Return CreateIteratorFromClosure(_closure_, ~Iterator Helper~, %IteratorHelperPrototype%). @@ -903,8 +906,14 @@

AsyncIterator.prototype.flatMap ( _mapper_ )

1. Else, 1. Let _innerValue_ be Completion(IteratorValue(_innerNext_)). 1. IfAbruptCloseAsyncIterator(_innerValue_, _iterated_). - 1. Let _yielded_ be Completion(Yield(_innerValue_)). - 1. IfAbruptCloseAsyncIterator(_yielded_, _iterated_). + 1. [id="step-async-iterator-flatmap-yield"] Let _completion_ be Completion(Yield(_innerValue_)). + 1. If _completion_ is a return completion, then + 1. Let _backupCompletion_ be Completion(IteratorClose(_innerIterator_, _completion_)). + 1. IfAbruptCloseIterator(_backupCompletion_, _iterated_). + 1. Return ? IteratorClose(_completion_, _iterated_). + 1. Else if _completion_ is a throw completion, then + 1. Assert: Awaiting _innerValue_ during the Yield on step threw. + 1. Return ? IteratorClose(_completion_, _iterated_). 1. Return CreateAsyncIteratorFromClosure(_closure_, ~Async Iterator Helper~, %AsyncIteratorHelperPrototype%).