// async iteration in JavaScript? function SelectAsync(asyncGenerator, asyncProjection) { return function(cancellationToken) { return spawnSequence(function*(Yielder){ foreach (asyncItem in asyncGenerator(cancellationToken)) { var item = yield asyncItem; var result = yield asyncProjection(item, cancellationToken); yield Yielder.Result(result); } yield Yielder.Return(); } } }