На самом деле это будет рекурсивный вызов, который вы будете делать с измененными данными каждый раз, когда получите код ответа, отличный от 200. См. Следующий фрагмент кода:
myFunction(someData): void {
this.myService.serviceFunction(someData).subscribe(
response => {
if (response.status !== 200) {
//modify your data
myFunction(modifiedData);
}
},
err => {
//deal error response
if (err.status !== 200) {
//modify your data
myFunction(modifiedData);
}
}
);
}