- Let O be this value.
- If Type(O) is not Object or O does not have all the internal slots of a %AsyncIteratorPrototypeMapIteratorPrototype% Instance, return ! PromiseReject(a newly created TypeError object).
- Let mapper be O.[[Mapper]].
- Let iterated be O.[[Iterated]].
- Let result be SubMap(iterated, v).
- If result is an abrupt completion, return PromiseReject(result.[[Value]]).
- Return PromiseResolve(result.[[Value]]).
SubMap(iterated, v)
- Let nextPromise be ? IteratorNext(iterated, v)
- Let next be ? Await(nextPromise)
- Let done be ? IteratorComplete(next)
- If done is true, then return ! CreateIterResultObject(undefined, true)
- Let value be ? IteratorValue(next).
- Let mapped be ? Await(? Call(mapper, undefined, « value »)).
- Return CreateIterResultObject(mapped, false).