@@ -254,14 +254,7 @@ export default class RouteOperator {
254254
255255 let quoteMetadata = this . quoteMetadataCache . get ( routeName , quoteParams ) ;
256256
257- const isRefetchRequired =
258- ! quoteMetadata ?. quote ||
259- ! quoteMetadata ?. request ||
260- ! quoteMetadata ?. router ;
261-
262- if ( isRefetchRequired ) {
263- // Refetch the quote as cached quote does not exist
264- // This case should be hit rarely
257+ if ( ! quoteMetadata ?. quote . success ) {
265258 quoteMetadata = await route . getQuote (
266259 amount ,
267260 sourceToken ,
@@ -271,14 +264,13 @@ export default class RouteOperator {
271264 options ,
272265 recipientAddress ,
273266 ) ;
267+
268+ if ( ! quoteMetadata . quote . success ) {
269+ throw quoteMetadata . quote . error ;
270+ }
274271 }
275272
276- return route . send (
277- quoteMetadata as QuoteMetadata ,
278- signer ,
279- destChain ,
280- recipientAddress ,
281- ) ;
273+ return route . send ( quoteMetadata , signer , destChain , recipientAddress ) ;
282274 }
283275}
284276
@@ -308,7 +300,7 @@ class QuoteMetadataCache {
308300 ) } :${ params . nativeGas } :${ params . recipient } `;
309301 }
310302
311- get ( routeName : string , params : QuoteParams ) : Partial < QuoteMetadata > | null {
303+ get ( routeName : string , params : QuoteParams ) : QuoteMetadata | null {
312304 const key = this . quoteParamsKey ( routeName , params ) ;
313305 const quoteMetadata = this . cache [ key ] ;
314306 const hasQuoteExpired = quoteMetadata ?. ttl ( ) <= 5_000 ;
@@ -321,7 +313,7 @@ class QuoteMetadataCache {
321313 return {
322314 quote : quoteMetadata . quote ,
323315 request : quoteMetadata . request ,
324- router : quoteMetadata . router ,
316+ routeInstance : quoteMetadata . routeInstance ,
325317 } ;
326318 }
327319
@@ -343,7 +335,7 @@ class QuoteMetadataCache {
343335
344336 // We don't yet have a pending request for this key, so initiate one
345337 route
346- . computeQuote (
338+ . getQuote (
347339 params . amount ,
348340 params . sourceToken ,
349341 params . destToken ,
@@ -352,7 +344,7 @@ class QuoteMetadataCache {
352344 { nativeGas : params . nativeGas } ,
353345 params . recipient ,
354346 )
355- . then ( ( { router , quote, request } : Required < QuoteMetadata > ) => {
347+ . then ( ( { routeInstance , quote, request } : Required < QuoteMetadata > ) => {
356348 const pending = this . pending [ key ] ;
357349
358350 for ( const { resolve } of pending ) {
@@ -363,9 +355,11 @@ class QuoteMetadataCache {
363355
364356 if ( quote . success ) {
365357 quote . expires = getQuoteExpiry ( quote . expires ) ;
358+ } else {
359+ throw quote . error ;
366360 }
367361
368- this . cache [ key ] = new QuoteMetadataEntry ( quote , router , request ) ;
362+ this . cache [ key ] = new QuoteMetadataEntry ( quote , routeInstance , request ) ;
369363 } )
370364 . catch ( ( err : any ) => {
371365 const pending = this . pending [ key ] ;
@@ -377,10 +371,14 @@ class QuoteMetadataCache {
377371 delete this . pending [ key ] ;
378372
379373 // Cache uncaught error
380- this . cache [ key ] = new QuoteMetadataEntry ( {
381- success : false ,
382- error : err ,
383- } ) ;
374+ this . cache [ key ] = new QuoteMetadataEntry (
375+ {
376+ success : false ,
377+ error : err ,
378+ } ,
379+ { } as routes . Route < Network > ,
380+ { } as routes . RouteTransferRequest < Network > ,
381+ ) ;
384382 } ) ;
385383
386384 return new Promise ( ( resolve , reject ) => {
@@ -418,17 +416,17 @@ class QuoteMetadataEntry {
418416 // Last time we fetched a quote
419417 timestamp : Date ;
420418 // Optional route used for the quote
421- router ? : routes . Route < Network > ;
419+ routeInstance : routes . Route < Network > ;
422420 // Optional request used for the quote
423- request ? : routes . RouteTransferRequest < Network > ;
421+ request : routes . RouteTransferRequest < Network > ;
424422
425423 constructor (
426424 quote : QuoteResult ,
427- router ? : routes . Route < Network > ,
428- request ? : routes . RouteTransferRequest < Network > ,
425+ routeInstance : routes . Route < Network > ,
426+ request : routes . RouteTransferRequest < Network > ,
429427 ) {
430428 this . quote = quote ;
431- this . router = router ;
429+ this . routeInstance = routeInstance ;
432430 this . request = request ;
433431 this . timestamp = new Date ( ) ;
434432 }
0 commit comments