@@ -2,8 +2,7 @@ import { initEpoxy } from './epoxy.js';
22import { PSocket , PTLSSocket } from './PSocket.js' ;
33import { pFetch } from './requests.js' ;
44
5- let cachedEpoxyClientPromise ;
6- let cachedEpoxyClientKey ;
5+ let cachedEpoxy = undefined ;
76
87function getPuterInstance ( ) {
98 const puter = globalThis . puter ;
@@ -59,28 +58,33 @@ export async function generateWispV1URL () {
5958}
6059
6160export async function getEpoxyClient ( { refresh = false } = { } ) {
61+ if ( cachedEpoxy && cachedEpoxy . initting ) return await cachedEpoxy . promise ;
62+
6263 const nextKey = getClientCacheKey ( ) ;
63- if ( refresh || ! cachedEpoxyClientPromise || cachedEpoxyClientKey !== nextKey ) {
64- cachedEpoxyClientKey = nextKey ;
65- cachedEpoxyClientPromise = ( async ( ) => {
66- const { wispToken, wispServer } = await getWispCredentials ( ) ;
67- return await initEpoxy ( { wispToken, wispServer } ) ;
64+ if ( refresh || ! ( cachedEpoxy && cachedEpoxy . key === nextKey ) ) {
65+ let epoxy = { key : nextKey , initting : true } ;
66+ let promise = ( async ( ) => {
67+ try {
68+ const { wispToken, wispServer } = await getWispCredentials ( ) ;
69+ let ret = await initEpoxy ( { wispToken, wispServer } ) ;
70+ epoxy . initting = false ;
71+ return ret ;
72+ } catch {
73+ if ( cachedEpoxy === epoxy ) {
74+ cachedEpoxy = undefined ;
75+ }
76+ }
6877 } ) ( ) ;
78+ epoxy . promise = promise ;
6979
70- cachedEpoxyClientPromise . catch ( ( ) => {
71- if ( cachedEpoxyClientKey === nextKey ) {
72- cachedEpoxyClientPromise = undefined ;
73- cachedEpoxyClientKey = undefined ;
74- }
75- } ) ;
80+ cachedEpoxy = epoxy ;
7681 }
7782
78- return await cachedEpoxyClientPromise ;
83+ return await cachedEpoxy . promise ;
7984}
8085
8186export function clearEpoxyClientCache ( ) {
82- cachedEpoxyClientPromise = undefined ;
83- cachedEpoxyClientKey = undefined ;
87+ cachedEpoxy = undefined ;
8488}
8589
8690export let netAPI = {
0 commit comments