@@ -347,6 +347,13 @@ export class RemoteInitial<L, A> {
347
347
exists ( p : Predicate < A > ) : boolean {
348
348
return false ;
349
349
}
350
+
351
+ /**
352
+ * Processes failure error into new RemoteData if function f return some value
353
+ */
354
+ recover ( f : ( error : L ) => Option < A > ) : RemoteData < L , A > {
355
+ return this ;
356
+ }
350
357
}
351
358
352
359
export class RemoteFailure < L , A > {
@@ -633,6 +640,13 @@ export class RemoteFailure<L, A> {
633
640
exists ( p : Predicate < A > ) : boolean {
634
641
return false ;
635
642
}
643
+
644
+ /**
645
+ * Processes failure error into new RemoteData if function f return some value
646
+ */
647
+ recover ( f : ( error : L ) => Option < A > ) : RemoteData < L , A > {
648
+ return f ( this . error ) . fold < RemoteData < L , A > > ( this , success ) ; //tslint:disable-line no-use-before-declare
649
+ }
636
650
}
637
651
638
652
export class RemoteSuccess < L , A > {
@@ -919,6 +933,13 @@ export class RemoteSuccess<L, A> {
919
933
exists ( p : Predicate < A > ) : boolean {
920
934
return p ( this . value ) ;
921
935
}
936
+
937
+ /**
938
+ * Processes failure error into new RemoteData if function f return some value
939
+ */
940
+ recover ( f : ( error : L ) => Option < A > ) : RemoteData < L , A > {
941
+ return this ;
942
+ }
922
943
}
923
944
924
945
export class RemotePending < L , A > {
@@ -1210,6 +1231,13 @@ export class RemotePending<L, A> {
1210
1231
exists ( p : Predicate < A > ) : boolean {
1211
1232
return false ;
1212
1233
}
1234
+
1235
+ /**
1236
+ * Processes failure error into new RemoteData if function f return some value
1237
+ */
1238
+ recover ( f : ( error : L ) => Option < A > ) : RemoteData < L , A > {
1239
+ return this ;
1240
+ }
1213
1241
}
1214
1242
1215
1243
/**
0 commit comments