From 46b18ba31bde841543758d6a585e59404105ed0e Mon Sep 17 00:00:00 2001 From: HarshaNalluru <10452642+HarshaNalluru@users.noreply.github.com> Date: Thu, 6 Jun 2019 11:15:25 -0700 Subject: [PATCH 01/10] Paging prototype for storage-queue --- .../samples/typescript/iterators.ts | 19 +++-- .../storage-queue/src/QueueServiceClient.ts | 74 ++++++------------- 2 files changed, 36 insertions(+), 57 deletions(-) diff --git a/sdk/storage/storage-queue/samples/typescript/iterators.ts b/sdk/storage/storage-queue/samples/typescript/iterators.ts index 7a39f06c56b4..f4d89c032469 100644 --- a/sdk/storage/storage-queue/samples/typescript/iterators.ts +++ b/sdk/storage/storage-queue/samples/typescript/iterators.ts @@ -30,14 +30,19 @@ async function main() { i++; } - // List queues - generator syntax - let iter2 = await queueServiceClient.listQueues(); i = 1; - let item = await iter2.next(); - do { - console.log(`Queue${i++}: ${item.value.name}`); - item = await iter2.next(); - } while (item.value); + for await (const item of queueServiceClient.listQueues()) { + console.log(`Queue${i}: ${item.name}`); + i++; + } + + i = 1; + for await (const item2 of queueServiceClient.listQueues().byPage()) { + item2.queueItems!.forEach((queueItem) => { + console.log(`Queue${i}: ${queueItem.name}`); + i++; + }); + } } // An async method returns a Promise object, which is compatible with then().catch() coding style. diff --git a/sdk/storage/storage-queue/src/QueueServiceClient.ts b/sdk/storage/storage-queue/src/QueueServiceClient.ts index 3139dad4e20f..19980ab95531 100644 --- a/sdk/storage/storage-queue/src/QueueServiceClient.ts +++ b/sdk/storage/storage-queue/src/QueueServiceClient.ts @@ -200,56 +200,6 @@ export class QueueServiceClient extends StorageClient { }); } - /** - * Iterates over queues under the specified account. - * - * @param {ServiceListQueuesSegmentOptions} [options={}] Options to list queues(optional) - * @returns {AsyncIterableIterator} - * @memberof QueueServiceClient - * - * @example - * let i = 1; - * for await (const item of queueServiceClient.listQueues()) { - * console.log(`Queue${i}: ${item.name}`); - * i++; - * } - * - * @example - * let iter1 = queueServiceClient.listQueues(); - * let i = 1; - * for await (const item of iter1) { - * console.log(`Queue${i}: ${item.name}`); - * i++; - * } - * - * @example - * let iter2 = await queueServiceClient.listQueues(); - * i = 1; - * let item = await iter2.next(); - * do { - * console.log(`Queue${i++}: ${item.value.name}`); - * item = await iter2.next(); - * } while (item.value); - * - */ - public async *listQueues( - options: ServiceListQueuesSegmentOptions = {} - ): AsyncIterableIterator { - let marker = undefined; - const queueServiceClient = this; - const aborter = !options.abortSignal ? Aborter.none : options.abortSignal; - let listQueuesResponse; - do { - listQueuesResponse = await queueServiceClient.listQueuesSegment(marker, { - ...options, - abortSignal: aborter - }); - - marker = listQueuesResponse.nextMarker; - yield* listQueuesResponse.queueItems; - } while (marker); - } - /** * Returns a list of the queues under the specified account. * @see https://docs.microsoft.com/en-us/rest/api/storageservices/list-queues1 @@ -276,4 +226,28 @@ export class QueueServiceClient extends StorageClient { ...options }); } + + async *listSegments( + options: ServiceListQueuesSegmentOptions = {} + ): AsyncIterableIterator { + let marker: string | undefined; + do { + yield await this.listQueuesSegment(marker, options); + } while (marker); + } + + async *listItems( + options: ServiceListQueuesSegmentOptions = {} + ): AsyncIterableIterator { + for await (const segment of this.listSegments(options)) { + yield* segment.queueItems; + } + } + + public listQueues(options: ServiceListQueuesSegmentOptions = {}) { + return { + [Symbol.asyncIterator]: () => this.listItems(options), + byPage: () => this.listSegments(options) + }; + } } From 060230b7663e0ada60e38bc4992ecc9ece29d0ca Mon Sep 17 00:00:00 2001 From: HarshaNalluru <10452642+HarshaNalluru@users.noreply.github.com> Date: Thu, 6 Jun 2019 13:54:56 -0700 Subject: [PATCH 02/10] updated the marker logic --- sdk/storage/storage-queue/src/QueueServiceClient.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/sdk/storage/storage-queue/src/QueueServiceClient.ts b/sdk/storage/storage-queue/src/QueueServiceClient.ts index 19980ab95531..faf795349b67 100644 --- a/sdk/storage/storage-queue/src/QueueServiceClient.ts +++ b/sdk/storage/storage-queue/src/QueueServiceClient.ts @@ -231,8 +231,11 @@ export class QueueServiceClient extends StorageClient { options: ServiceListQueuesSegmentOptions = {} ): AsyncIterableIterator { let marker: string | undefined; + let listQueuesResponse; do { - yield await this.listQueuesSegment(marker, options); + listQueuesResponse = await this.listQueuesSegment(marker, options); + marker = listQueuesResponse.nextMarker; + yield await listQueuesResponse; } while (marker); } From 2cb5bb686371ccd596fb5ca3a516f9fcf7a9e3a5 Mon Sep 17 00:00:00 2001 From: HarshaNalluru <10452642+HarshaNalluru@users.noreply.github.com> Date: Thu, 6 Jun 2019 15:44:21 -0700 Subject: [PATCH 03/10] marker and pagesize - optional arguments --- .../storage-queue/src/QueueServiceClient.ts | 26 ++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) diff --git a/sdk/storage/storage-queue/src/QueueServiceClient.ts b/sdk/storage/storage-queue/src/QueueServiceClient.ts index faf795349b67..8280011a2cd5 100644 --- a/sdk/storage/storage-queue/src/QueueServiceClient.ts +++ b/sdk/storage/storage-queue/src/QueueServiceClient.ts @@ -228,9 +228,9 @@ export class QueueServiceClient extends StorageClient { } async *listSegments( + marker: string | undefined = undefined, options: ServiceListQueuesSegmentOptions = {} ): AsyncIterableIterator { - let marker: string | undefined; let listQueuesResponse; do { listQueuesResponse = await this.listQueuesSegment(marker, options); @@ -242,7 +242,8 @@ export class QueueServiceClient extends StorageClient { async *listItems( options: ServiceListQueuesSegmentOptions = {} ): AsyncIterableIterator { - for await (const segment of this.listSegments(options)) { + let marker: string | undefined; + for await (const segment of this.listSegments(marker, options)) { yield* segment.queueItems; } } @@ -250,7 +251,26 @@ export class QueueServiceClient extends StorageClient { public listQueues(options: ServiceListQueuesSegmentOptions = {}) { return { [Symbol.asyncIterator]: () => this.listItems(options), - byPage: () => this.listSegments(options) + /** + *@param {string} [marker] A string value that identifies the portion of + * the list of queues to be returned with the next listing operation. The + * operation returns the NextMarker value within the response body if the + * listing operation did not return all queues remaining to be listed + * with the current page. The NextMarker value can be used as the value for + * the marker parameter in a subsequent call to request the next page of list + * items. The marker value is opaque to the client. + *@param {number} [pagesize] Number of items to be returned. Default value is `10`. + */ + byPage: ({ + marker = undefined, + pagesize = 10 + }: { + marker?: string | undefined; + pagesize?: number; + }) => { + options.maxresults = pagesize; + return this.listSegments(marker, options); + } }; } } From f46a9ff0b00fc7c18e02dc5378bc5c3de4490d0c Mon Sep 17 00:00:00 2001 From: HarshaNalluru <10452642+HarshaNalluru@users.noreply.github.com> Date: Thu, 6 Jun 2019 15:45:05 -0700 Subject: [PATCH 04/10] Add all possible samples --- .../samples/typescript/iterators.ts | 80 +++++++++++++++---- 1 file changed, 65 insertions(+), 15 deletions(-) diff --git a/sdk/storage/storage-queue/samples/typescript/iterators.ts b/sdk/storage/storage-queue/samples/typescript/iterators.ts index f4d89c032469..9ed6fb43d7b7 100644 --- a/sdk/storage/storage-queue/samples/typescript/iterators.ts +++ b/sdk/storage/storage-queue/samples/typescript/iterators.ts @@ -23,26 +23,76 @@ async function main() { console.log(`List queues`); // List queues - let iter1 = queueServiceClient.listQueues(); + // let iter1 = queueServiceClient.listQueues(); + // let i = 1; + // for await (const item of iter1) { + // console.log(`Queue${i}: ${item.name}`); + // i++; + // } + + // i = 1; + // for await (const item of queueServiceClient.listQueues()) { + // console.log(`Queue${i}: ${item.name}`); + // i++; + // } + + // let i = 1; + // for await (const item2 of queueServiceClient.listQueues().byPage({})) { + // item2.queueItems!.forEach((queueItem) => { + // console.log(`Queue${i}: ${queueItem.name}`); + // i++; + // }); + // } + + // let i = 1; + // for await (const item2 of queueServiceClient.listQueues().byPage({ pagesize: 20 })) { + // item2.queueItems!.forEach((queueItem) => { + // console.log(`Queue${i}: ${queueItem.name}`); + // i++; + // }); + // } + + // let i = 1; + // let marker: string | undefined = undefined; + // let item2: ServiceListQueuesSegmentResponse; + // for await (item2 of queueServiceClient.listQueues().byPage({ marker: marker, pagesize: 12 })) { + // for (const queueItem of item2.queueItems!) { + // console.log(`Queue${i}: ${queueItem.name}`); + // i++; + // } + // marker = item2.nextMarker; + // } + + // let i = 1; + // let marker: string | undefined = undefined; + // let iter1 = queueServiceClient.listQueues().byPage({ marker: marker, pagesize: 2 }); + // let item = await iter1.next(); + // do { + // for (const queueItem of item.value.queueItems!) { + // console.log(`Queue${i}: ${queueItem.name}`); + // i++; + // } + // item = await iter1.next(); + // } while (item.value); + + // Passing marker as argument let i = 1; - for await (const item of iter1) { - console.log(`Queue${i}: ${item.name}`); + let marker: string | undefined = undefined; + let iter1 = queueServiceClient.listQueues().byPage({ pagesize: 2 }); + let item = await iter1.next(); + // Prints 2 queuenames + for (const queueItem of item.value.queueItems!) { + console.log(`Queue${i}: ${queueItem.name}`); i++; } - - i = 1; - for await (const item of queueServiceClient.listQueues()) { - console.log(`Queue${i}: ${item.name}`); + marker = item.value.nextMarker; + let iter2 = queueServiceClient.listQueues().byPage({ marker: marker, pagesize: 10 }); + item = await iter2.next(); + // Prints 10 queuenames + for (const queueItem of item.value.queueItems!) { + console.log(`Queue${i}: ${queueItem.name}`); i++; } - - i = 1; - for await (const item2 of queueServiceClient.listQueues().byPage()) { - item2.queueItems!.forEach((queueItem) => { - console.log(`Queue${i}: ${queueItem.name}`); - i++; - }); - } } // An async method returns a Promise object, which is compatible with then().catch() coding style. From b63e2262ef4d82b22dcf224f3b831580abf04ac3 Mon Sep 17 00:00:00 2001 From: HarshaNalluru <10452642+HarshaNalluru@users.noreply.github.com> Date: Thu, 6 Jun 2019 15:48:33 -0700 Subject: [PATCH 05/10] remove redundant marker --- .../storage-queue/samples/typescript/iterators.ts | 15 ++------------- 1 file changed, 2 insertions(+), 13 deletions(-) diff --git a/sdk/storage/storage-queue/samples/typescript/iterators.ts b/sdk/storage/storage-queue/samples/typescript/iterators.ts index 9ed6fb43d7b7..abbfe5fad15b 100644 --- a/sdk/storage/storage-queue/samples/typescript/iterators.ts +++ b/sdk/storage/storage-queue/samples/typescript/iterators.ts @@ -52,20 +52,9 @@ async function main() { // }); // } + // Generator syntax .next() // let i = 1; - // let marker: string | undefined = undefined; - // let item2: ServiceListQueuesSegmentResponse; - // for await (item2 of queueServiceClient.listQueues().byPage({ marker: marker, pagesize: 12 })) { - // for (const queueItem of item2.queueItems!) { - // console.log(`Queue${i}: ${queueItem.name}`); - // i++; - // } - // marker = item2.nextMarker; - // } - - // let i = 1; - // let marker: string | undefined = undefined; - // let iter1 = queueServiceClient.listQueues().byPage({ marker: marker, pagesize: 2 }); + // let iter1 = queueServiceClient.listQueues().byPage({ pagesize: 2 }); // let item = await iter1.next(); // do { // for (const queueItem of item.value.queueItems!) { From 199e0c741f157dc3c1fcded6bc449a7ace79189a Mon Sep 17 00:00:00 2001 From: HarshaNalluru <10452642+HarshaNalluru@users.noreply.github.com> Date: Thu, 6 Jun 2019 15:51:40 -0700 Subject: [PATCH 06/10] add some comments --- sdk/storage/storage-queue/samples/typescript/iterators.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/sdk/storage/storage-queue/samples/typescript/iterators.ts b/sdk/storage/storage-queue/samples/typescript/iterators.ts index abbfe5fad15b..7d57dfb0bdf1 100644 --- a/sdk/storage/storage-queue/samples/typescript/iterators.ts +++ b/sdk/storage/storage-queue/samples/typescript/iterators.ts @@ -30,6 +30,7 @@ async function main() { // i++; // } + // Same as the previous example // i = 1; // for await (const item of queueServiceClient.listQueues()) { // console.log(`Queue${i}: ${item.name}`); @@ -44,6 +45,7 @@ async function main() { // }); // } + // Same as the previous example // let i = 1; // for await (const item2 of queueServiceClient.listQueues().byPage({ pagesize: 20 })) { // item2.queueItems!.forEach((queueItem) => { @@ -64,7 +66,7 @@ async function main() { // item = await iter1.next(); // } while (item.value); - // Passing marker as argument + // Passing marker as argument (similar to the previous example) let i = 1; let marker: string | undefined = undefined; let iter1 = queueServiceClient.listQueues().byPage({ pagesize: 2 }); From 0aaf8e4e626caa2c9318556c7048349d3f4a6070 Mon Sep 17 00:00:00 2001 From: HarshaNalluru <10452642+HarshaNalluru@users.noreply.github.com> Date: Thu, 6 Jun 2019 15:59:44 -0700 Subject: [PATCH 07/10] Uncomment the samples --- .../samples/typescript/iterators.ts | 82 +++++++++---------- 1 file changed, 41 insertions(+), 41 deletions(-) diff --git a/sdk/storage/storage-queue/samples/typescript/iterators.ts b/sdk/storage/storage-queue/samples/typescript/iterators.ts index 7d57dfb0bdf1..ed1f224d361d 100644 --- a/sdk/storage/storage-queue/samples/typescript/iterators.ts +++ b/sdk/storage/storage-queue/samples/typescript/iterators.ts @@ -23,62 +23,62 @@ async function main() { console.log(`List queues`); // List queues - // let iter1 = queueServiceClient.listQueues(); - // let i = 1; - // for await (const item of iter1) { - // console.log(`Queue${i}: ${item.name}`); - // i++; - // } + let i = 1; + let marker: string | undefined = undefined; + + let iter1 = queueServiceClient.listQueues(); + for await (const item of iter1) { + console.log(`Queue${i}: ${item.name}`); + i++; + } // Same as the previous example - // i = 1; - // for await (const item of queueServiceClient.listQueues()) { - // console.log(`Queue${i}: ${item.name}`); - // i++; - // } + i = 1; + for await (const item of queueServiceClient.listQueues()) { + console.log(`Queue${i}: ${item.name}`); + i++; + } - // let i = 1; - // for await (const item2 of queueServiceClient.listQueues().byPage({})) { - // item2.queueItems!.forEach((queueItem) => { - // console.log(`Queue${i}: ${queueItem.name}`); - // i++; - // }); - // } + i = 1; + for await (const item1 of queueServiceClient.listQueues().byPage({})) { + item1.queueItems!.forEach((queueItem) => { + console.log(`Queue${i}: ${queueItem.name}`); + i++; + }); + } // Same as the previous example - // let i = 1; - // for await (const item2 of queueServiceClient.listQueues().byPage({ pagesize: 20 })) { - // item2.queueItems!.forEach((queueItem) => { - // console.log(`Queue${i}: ${queueItem.name}`); - // i++; - // }); - // } + i = 1; + for await (const item2 of queueServiceClient.listQueues().byPage({ pagesize: 20 })) { + item2.queueItems!.forEach((queueItem) => { + console.log(`Queue${i}: ${queueItem.name}`); + i++; + }); + } // Generator syntax .next() - // let i = 1; - // let iter1 = queueServiceClient.listQueues().byPage({ pagesize: 2 }); - // let item = await iter1.next(); - // do { - // for (const queueItem of item.value.queueItems!) { - // console.log(`Queue${i}: ${queueItem.name}`); - // i++; - // } - // item = await iter1.next(); - // } while (item.value); + i = 1; + let iter2 = queueServiceClient.listQueues().byPage({ pagesize: 2 }); + let item2 = await iter2.next(); + do { + for (const queueItem of item2.value.queueItems!) { + console.log(`Queue${i}: ${queueItem.name}`); + i++; + } + item2 = await iter2.next(); + } while (item2.value); // Passing marker as argument (similar to the previous example) - let i = 1; - let marker: string | undefined = undefined; - let iter1 = queueServiceClient.listQueues().byPage({ pagesize: 2 }); - let item = await iter1.next(); + let iter3 = queueServiceClient.listQueues().byPage({ pagesize: 2 }); + let item = await iter3.next(); // Prints 2 queuenames for (const queueItem of item.value.queueItems!) { console.log(`Queue${i}: ${queueItem.name}`); i++; } marker = item.value.nextMarker; - let iter2 = queueServiceClient.listQueues().byPage({ marker: marker, pagesize: 10 }); - item = await iter2.next(); + iter3 = queueServiceClient.listQueues().byPage({ marker: marker, pagesize: 10 }); + item = await iter3.next(); // Prints 10 queuenames for (const queueItem of item.value.queueItems!) { console.log(`Queue${i}: ${queueItem.name}`); From a58fd8bf96d41310d32d470903c74dd1b642cdd7 Mon Sep 17 00:00:00 2001 From: HarshaNalluru <10452642+HarshaNalluru@users.noreply.github.com> Date: Thu, 6 Jun 2019 16:12:21 -0700 Subject: [PATCH 08/10] Add i=1 for an example --- sdk/storage/storage-queue/samples/typescript/iterators.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/sdk/storage/storage-queue/samples/typescript/iterators.ts b/sdk/storage/storage-queue/samples/typescript/iterators.ts index ed1f224d361d..cf52fab49aa4 100644 --- a/sdk/storage/storage-queue/samples/typescript/iterators.ts +++ b/sdk/storage/storage-queue/samples/typescript/iterators.ts @@ -69,6 +69,7 @@ async function main() { } while (item2.value); // Passing marker as argument (similar to the previous example) + i = 1; let iter3 = queueServiceClient.listQueues().byPage({ pagesize: 2 }); let item = await iter3.next(); // Prints 2 queuenames From 798012c1e0dd22af03cb8c66cfa42ec234ebbec3 Mon Sep 17 00:00:00 2001 From: HarshaNalluru <10452642+HarshaNalluru@users.noreply.github.com> Date: Mon, 10 Jun 2019 12:07:52 -0700 Subject: [PATCH 09/10] Naive .next() method --- .../samples/typescript/iterators.ts | 38 +++++++++++++------ 1 file changed, 26 insertions(+), 12 deletions(-) diff --git a/sdk/storage/storage-queue/samples/typescript/iterators.ts b/sdk/storage/storage-queue/samples/typescript/iterators.ts index cf52fab49aa4..d1284c428b3c 100644 --- a/sdk/storage/storage-queue/samples/typescript/iterators.ts +++ b/sdk/storage/storage-queue/samples/typescript/iterators.ts @@ -39,6 +39,20 @@ async function main() { i++; } + // Generator syntax .next() + i = 1; + let iter2 = queueServiceClient.listQueues()[Symbol.asyncIterator](); + let item2 = (await iter2.next()).value; + do { + console.log(`Queue${i}: ${item2.name}`); + i++; + item2 = (await iter2.next()).value; + } while (item2); + + //////////////////////////////// + /// Examples for .byPage() /// + //////////////////////////////// + i = 1; for await (const item1 of queueServiceClient.listQueues().byPage({})) { item1.queueItems!.forEach((queueItem) => { @@ -58,30 +72,30 @@ async function main() { // Generator syntax .next() i = 1; - let iter2 = queueServiceClient.listQueues().byPage({ pagesize: 2 }); - let item2 = await iter2.next(); + let iter3 = queueServiceClient.listQueues().byPage({ pagesize: 2 }); + let item3 = (await iter3.next()).value; do { - for (const queueItem of item2.value.queueItems!) { + for (const queueItem of item3.queueItems!) { console.log(`Queue${i}: ${queueItem.name}`); i++; } - item2 = await iter2.next(); - } while (item2.value); + item3 = (await iter3.next()).value; + } while (item3); // Passing marker as argument (similar to the previous example) i = 1; - let iter3 = queueServiceClient.listQueues().byPage({ pagesize: 2 }); - let item = await iter3.next(); + let iter4 = queueServiceClient.listQueues().byPage({ pagesize: 2 }); + let item = (await iter4.next()).value; // Prints 2 queuenames - for (const queueItem of item.value.queueItems!) { + for (const queueItem of item.queueItems!) { console.log(`Queue${i}: ${queueItem.name}`); i++; } - marker = item.value.nextMarker; - iter3 = queueServiceClient.listQueues().byPage({ marker: marker, pagesize: 10 }); - item = await iter3.next(); + marker = item.nextMarker; + iter4 = queueServiceClient.listQueues().byPage({ marker: marker, pagesize: 10 }); + item = (await iter4.next()).value; // Prints 10 queuenames - for (const queueItem of item.value.queueItems!) { + for (const queueItem of item.queueItems!) { console.log(`Queue${i}: ${queueItem.name}`); i++; } From 17a0d79a54f6a05c60619ec7123c990c4a5749af Mon Sep 17 00:00:00 2001 From: HarshaNalluru <10452642+HarshaNalluru@users.noreply.github.com> Date: Mon, 10 Jun 2019 15:54:55 -0700 Subject: [PATCH 10/10] failed attempt --- .../storage-queue/samples/typescript/iterators.ts | 6 +++--- .../storage-queue/src/QueueServiceClient.ts | 15 ++++++++++++++- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/sdk/storage/storage-queue/samples/typescript/iterators.ts b/sdk/storage/storage-queue/samples/typescript/iterators.ts index d1284c428b3c..ea1645deebe7 100644 --- a/sdk/storage/storage-queue/samples/typescript/iterators.ts +++ b/sdk/storage/storage-queue/samples/typescript/iterators.ts @@ -28,14 +28,14 @@ async function main() { let iter1 = queueServiceClient.listQueues(); for await (const item of iter1) { - console.log(`Queue${i}: ${item.name}`); + console.log(`Queue${i}: ${item.value.name}`); i++; } // Same as the previous example i = 1; for await (const item of queueServiceClient.listQueues()) { - console.log(`Queue${i}: ${item.name}`); + console.log(`Queue${i}: ${item.value.name}`); i++; } @@ -44,7 +44,7 @@ async function main() { let iter2 = queueServiceClient.listQueues()[Symbol.asyncIterator](); let item2 = (await iter2.next()).value; do { - console.log(`Queue${i}: ${item2.name}`); + console.log(`Queue${i}: ${item2.value.name}`); i++; item2 = (await iter2.next()).value; } while (item2); diff --git a/sdk/storage/storage-queue/src/QueueServiceClient.ts b/sdk/storage/storage-queue/src/QueueServiceClient.ts index 8280011a2cd5..000c1c5e6032 100644 --- a/sdk/storage/storage-queue/src/QueueServiceClient.ts +++ b/sdk/storage/storage-queue/src/QueueServiceClient.ts @@ -249,8 +249,21 @@ export class QueueServiceClient extends StorageClient { } public listQueues(options: ServiceListQueuesSegmentOptions = {}) { + const client = this; return { - [Symbol.asyncIterator]: () => this.listItems(options), + [Symbol.asyncIterator]: function() { + return { + next: async function() { + return client + .listItems(options) + .next() + .then((value) => ({ + value, + done: value == null + })); + } + }; + }, /** *@param {string} [marker] A string value that identifies the portion of * the list of queues to be returned with the next listing operation. The