Does this make sense? How would you achieve the same thing, with cleaner code?
function retrieveBatch(offset){
var opts = {}
opts.limit = 100
if(offset) opts.offset = offset
return new Promise(function(resolve, reject) {
chargebee.subscription
.list(opts)
.request(function(err, value){
if(err) return reject(err)
return resolve(value)
})
})
}
function retireveAll(){
var subscriptions = []
function inception(data){
if(!data) return retrieveBatch().then(inception)
if(data && data.list) subscriptions.push(data.list)
if(data && data.next_offset) return retrieveBatch(data.next_offset).then(inception)
if(data && !data.next_offset) return _.flatten(subscriptions)
}
return Promise.resolve(inception(false))
}