(fix): retry when iota is unavailable
This commit is contained in:
parent
3666902ac9
commit
5ece90ef4b
3 changed files with 23 additions and 13 deletions
|
|
@ -435,15 +435,21 @@ export function Provider(props: {
|
|||
|
||||
const stateSync = new Promise<ProtocolMessage<"ClientStateSync">>(
|
||||
(resolve, reject) => {
|
||||
let unsubscribeStateSync = () => {};
|
||||
let unsubscribeNoIota = () => {};
|
||||
const cleanupStateSync = () => {
|
||||
clearTimeout(timeout);
|
||||
unsubscribeStateSync();
|
||||
unsubscribeNoIota();
|
||||
};
|
||||
const timeout = setTimeout(() => {
|
||||
unsubscribe();
|
||||
cleanupStateSync();
|
||||
reject(new Error("Initial state synchronization timed out"));
|
||||
}, 120_000);
|
||||
const unsubscribe = activeClient.subscribe(
|
||||
unsubscribeStateSync = activeClient.subscribe(
|
||||
"ClientStateSync",
|
||||
(message) => {
|
||||
clearTimeout(timeout);
|
||||
unsubscribe();
|
||||
cleanupStateSync();
|
||||
try {
|
||||
resolve(validateResponse("ClientStateSync", message));
|
||||
} catch (error) {
|
||||
|
|
@ -451,6 +457,10 @@ export function Provider(props: {
|
|||
}
|
||||
},
|
||||
);
|
||||
unsubscribeNoIota = activeClient.subscribe("ErrorNoIota", () => {
|
||||
cleanupStateSync();
|
||||
reject(new Error("No Iota is currently connected"));
|
||||
});
|
||||
},
|
||||
);
|
||||
const [, finalResponse] = await Promise.all([
|
||||
|
|
|
|||
Loading…
Reference in a new issue