diff --git a/src/network.ts b/src/network.ts index f309ef2..cbdd2c4 100644 --- a/src/network.ts +++ b/src/network.ts @@ -7,11 +7,18 @@ import { uint8ArrayToHexString } from "binconv"; export default class RpcNetwork { private _relaysAvailablePromise?: Promise; private _relaysAvailableResolve?: Function; + constructor(swarm = new Hyperswarm()) { this._swarm = swarm; this.init(); } + private _endPeerOnError?: (peer: any) => Promise; + + set endPeerOnError(value: (peer: any) => Promise) { + this._endPeerOnError = value; + } + private _methods: Map> = new Map>(); get methods(): Map> { @@ -142,7 +149,9 @@ export default class RpcNetwork { const resp = await query.result; if (resp.error) { - relay.end(); + if (await this._endPeerOnError?.(relay)) { + relay.end(); + } return; }