From 97e28fdf9a37b838d551ae630eaed60ae73f5ca1 Mon Sep 17 00:00:00 2001 From: rkfg Date: Sat, 24 Dec 2022 21:24:15 +0300 Subject: [PATCH] Fix connect/close return types and race condition --- relay.ts | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/relay.ts b/relay.ts index 86ac339..d9c2b87 100644 --- a/relay.ts +++ b/relay.ts @@ -6,8 +6,8 @@ import {Filter, matchFilters} from './filter' export type Relay = { url: string status: number - connect: () => void - close: () => void + connect: () => Promise + close: () => Promise sub: (filters: Filter[], opts: SubscriptionOptions) => Sub publish: (event: Event) => Pub on: (type: 'connect' | 'disconnect' | 'notice', cb: any) => void @@ -257,10 +257,11 @@ export function relayInit(url: string): Relay { }, connect, close(): Promise { - ws.close() - return new Promise(resolve => { + const result = new Promise(resolve => { resolveClose = resolve }) + ws.close() + return result }, get status() { return ws?.readyState ?? 3