Skip to content

Commit 747af47

Browse files
committed
fix: retry error shouldn't distinguish if it's not a lyla error, all error is possible.
1 parent 0fae306 commit 747af47

File tree

2 files changed

+27
-32
lines changed

2 files changed

+27
-32
lines changed

packages/core/src/core.ts

Lines changed: 26 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,7 @@ import {
77
LylaBrokenOnAfterResponseError,
88
LylaBrokenOnResponseErrorError,
99
LylaBrokenOnInitError,
10-
LylaBrokenOnBeforeRequestError,
11-
isLylaError
10+
LylaBrokenOnBeforeRequestError
1211
} from './error'
1312
import { mergeUrl, mergeHeaders, mergeOptions } from './utils'
1413
import type {
@@ -160,7 +159,7 @@ export function createLyla<C, M extends LylaAdapterMeta>(
160159
error: e,
161160
response: undefined,
162161
context: optionsWithContext.context,
163-
requestOptions: optionsWithContext,
162+
requestOptions: optionsWithContext
164163
},
165164
undefined
166165
)
@@ -734,36 +733,32 @@ export function createLyla<C, M extends LylaAdapterMeta>(
734733
try {
735734
response = await request(finalOptions)
736735
} catch (e) {
737-
// expected error
738-
if (_isLylaError(e)) {
739-
let rejected: LylaRetryOnRejectedCommand<C, M>
740-
// onRejected throws an error
741-
try {
742-
rejected = await onRejected({
743-
options: finalOptions as LylaRequestOptionsWithContext<C, M>,
744-
state,
745-
lyla,
746-
error: e
747-
})
748-
} catch (e) {
749-
throw makeBrokenRetryError(e)
750-
}
751-
// expected error
752-
switch (rejected.action) {
753-
case 'reject':
754-
if (_isLylaError(rejected.value)) {
755-
throw rejected.value
756-
} else {
757-
throw makeRetryRejectedError(rejected.value)
758-
}
759-
case 'retry':
760-
retryOptionsResolver = rejected.value
761-
continue
762-
}
763-
} else {
764-
// If it goes here, this is a bug.
736+
let rejected: LylaRetryOnRejectedCommand<C, M>
737+
// onRejected throws an error
738+
try {
739+
rejected = await onRejected({
740+
options: finalOptions as LylaRequestOptionsWithContext<C, M>,
741+
state,
742+
lyla,
743+
// The error can be a lyla error, or a custom error thrown by user
744+
// in lyla hooks.
745+
error: e
746+
})
747+
} catch (e) {
765748
throw makeBrokenRetryError(e)
766749
}
750+
// expected error
751+
switch (rejected.action) {
752+
case 'reject':
753+
if (_isLylaError(rejected.value)) {
754+
throw rejected.value
755+
} else {
756+
throw makeRetryRejectedError(rejected.value)
757+
}
758+
case 'retry':
759+
retryOptionsResolver = rejected.value
760+
continue
761+
}
767762
}
768763

769764
let resolved: LylaRetryOnResolvedCommand<any, C, M>

packages/core/src/types.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -266,7 +266,7 @@ export type LylaWithRetryOptions<C, M extends LylaAdapterMeta, S> = {
266266
state: S
267267
options: LylaRequestOptionsWithContext<C, M>
268268
lyla: Lyla<C, M>
269-
error: LylaError<C, M>
269+
error: unknown
270270
}) => Promise<LylaRetryOnRejectedCommand<C, M>>
271271
createState: () => S
272272
}

0 commit comments

Comments
 (0)