@@ -271,28 +271,27 @@ module.exports = function resolve(x, options, callback) {
271
271
}
272
272
273
273
function processDirs ( cb , dirs ) {
274
- iterate ( 0 ) ;
274
+ if ( dirs . length === 0 ) return cb ( null , undefined ) ;
275
+ var dir = dirs [ 0 ] ;
275
276
276
- function iterate ( i ) {
277
- if ( i === dirs . length ) return cb ( null , undefined ) ;
278
- var dir = dirs [ i ] ;
277
+ isDirectory ( path . dirname ( dir ) , isdir ) ;
279
278
280
- isDirectory ( path . dirname ( dir ) , function ( err , status ) {
281
- if ( err ) return cb ( err ) ;
282
- if ( ! status ) return iterate ( i + 1 ) ;
283
-
284
- loadAsFile ( dir , opts . package , function ( err , m , pkg ) {
285
- if ( err ) return cb ( err ) ;
286
- if ( m ) return cb ( null , m , pkg ) ;
279
+ function isdir ( err , isdir ) {
280
+ if ( err ) return cb ( err ) ;
281
+ if ( ! isdir ) return processDirs ( cb , dirs . slice ( 1 ) ) ;
282
+ loadAsFile ( dir , opts . package , onfile ) ;
283
+ }
287
284
288
- loadAsDirectory ( dir , opts . package , function ( err , n , pkg ) {
289
- if ( err ) return cb ( err ) ;
290
- if ( n ) return cb ( null , n , pkg ) ;
285
+ function onfile ( err , m , pkg ) {
286
+ if ( err ) return cb ( err ) ;
287
+ if ( m ) return cb ( null , m , pkg ) ;
288
+ loadAsDirectory ( dir , opts . package , ondir ) ;
289
+ }
291
290
292
- iterate ( i + 1 ) ;
293
- } ) ;
294
- } ) ;
295
- } ) ;
291
+ function ondir ( err , n , pkg ) {
292
+ if ( err ) return cb ( err ) ;
293
+ if ( n ) return cb ( null , n , pkg ) ;
294
+ processDirs ( cb , dirs . slice ( 1 ) ) ;
296
295
}
297
296
}
298
297
function loadNodeModules ( x , start , cb ) {
0 commit comments