summaryrefslogtreecommitdiff
path: root/cli/js/net.ts
diff options
context:
space:
mode:
Diffstat (limited to 'cli/js/net.ts')
-rw-r--r--cli/js/net.ts31
1 files changed, 20 insertions, 11 deletions
diff --git a/cli/js/net.ts b/cli/js/net.ts
index 962c78a5b..b06a4189a 100644
--- a/cli/js/net.ts
+++ b/cli/js/net.ts
@@ -61,21 +61,30 @@ export class ListenerImpl implements Listener {
return new ConnImpl(res.rid, res.remoteAddr, res.localAddr);
}
+ async next(): Promise<IteratorResult<Conn>> {
+ let conn: Conn;
+ try {
+ conn = await this.accept();
+ } catch (error) {
+ if (error instanceof errors.BadResource) {
+ return { value: undefined, done: true };
+ }
+ throw error;
+ }
+ return { value: conn!, done: false };
+ }
+
+ return(value?: Conn): Promise<IteratorResult<Conn>> {
+ this.close();
+ return Promise.resolve({ value, done: true });
+ }
+
close(): void {
close(this.rid);
}
- async *[Symbol.asyncIterator](): AsyncIterableIterator<Conn> {
- while (true) {
- try {
- yield await this.accept();
- } catch (error) {
- if (error instanceof errors.BadResource) {
- break;
- }
- throw error;
- }
- }
+ [Symbol.asyncIterator](): AsyncIterableIterator<Conn> {
+ return this;
}
}