Skip to content

Commit 914781c

Browse files
committed
Returns errors only when all integration calls fail
Updates integration result handling to return an error only if all integration calls fail, allowing partial successes to be returned even when some calls encounter errors. Improves resilience and user feedback by ensuring that failures in some integrations do not prevent successful results from being delivered. (#4492, #4748)
1 parent b10a7e5 commit 914781c

File tree

1 file changed

+9
-11
lines changed

1 file changed

+9
-11
lines changed

src/plus/integrations/integrationService.ts

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -792,29 +792,27 @@ export class IntegrationService implements Disposable {
792792
}
793793

794794
const results = await Promise.allSettled(promises);
795-
795+
const successfulResults = [
796+
...flatten(
797+
filterMap(results, r =>
798+
r.status === 'fulfilled' && r.value != null && r.value?.error == null ? r.value.value : undefined,
799+
),
800+
),
801+
];
796802
const errors = [
797803
...filterMap(results, r =>
798804
r.status === 'fulfilled' && r.value?.error != null ? r.value.error : undefined,
799805
),
800806
];
801-
if (errors.length) {
807+
if (errors.length > 0 && successfulResults.length === 0) {
802808
return {
803809
error: errors.length === 1 ? errors[0] : new AggregateError(errors),
804810
duration: Date.now() - start,
805811
};
806812
}
807813

808814
return {
809-
value: [
810-
...flatten(
811-
filterMap(results, r =>
812-
r.status === 'fulfilled' && r.value != null && r.value?.error == null
813-
? r.value.value
814-
: undefined,
815-
),
816-
),
817-
],
815+
value: successfulResults,
818816
duration: Date.now() - start,
819817
};
820818
}

0 commit comments

Comments
 (0)