22
33import fetchCorreios from './services/correios.js'
44import fetchViaCep from './services/viacep.js'
5- import Promise from 'bluebird'
65import CepPromiseError from './errors/cep-promise.js'
76
87const CEP_SIZE = 8
98
9+ const reverse = ( promise ) => new Promise ( ( resolve , reject ) => Promise . resolve ( promise ) . then ( reject , resolve ) )
10+ Promise . any = function ( iterable ) {
11+ return reverse ( Promise . all ( [ ...iterable ] . map ( reverse ) ) )
12+ }
13+
1014export default function ( cepRawValue ) {
1115 return new Promise ( ( resolve , reject ) => {
1216 Promise . resolve ( cepRawValue )
@@ -16,7 +20,7 @@ export default function (cepRawValue) {
1620 . then ( leftPadWithZeros )
1721 . then ( fetchCepFromServices )
1822 . then ( resolvePromise )
19- . catch ( Promise . AggregateError , handleServicesError )
23+ . catch ( handleServicesError )
2024 . catch ( rejectWithCepPromiseError )
2125
2226 function validateInputType ( cepRawValue ) {
@@ -71,18 +75,14 @@ export default function (cepRawValue) {
7175 }
7276
7377 function handleServicesError ( aggregatedErrors ) {
74- const errors = aggregatedErrors . map ( ( error ) => {
75- return {
76- message : error . message ,
77- service : error . service
78- }
79- } )
80-
81- throw new CepPromiseError ( {
82- message : 'Todos os serviços de CEP retornaram erro.' ,
83- type : 'service_error' ,
84- errors : errors
85- } )
78+ if ( aggregatedErrors . length !== undefined ) {
79+ throw new CepPromiseError ( {
80+ message : 'Todos os serviços de CEP retornaram erro.' ,
81+ type : 'service_error' ,
82+ errors : aggregatedErrors
83+ } )
84+ }
85+ throw aggregatedErrors
8686 }
8787
8888 function rejectWithCepPromiseError ( error ) {
0 commit comments