servers = {
let servers = this || d3.range(5).map(() => ({customerId: false, timeToComplete: false}))
while (true) {
servers.filter(s => s.customerId !== false).forEach(s => {
if(Date.now() - customers[s.customerId].serving > s.timeToComplete) {
customers[s.customerId].served = Date.now()
s.customerId = false
}
})
servers.filter(s => s.customerId === false).forEach(s => {
if(!s.customerId) {
var index = customerIndexes.shift()
if(index !== undefined) {
s.customerId = index
s.timeToComplete = service()
customers[index].serving = Date.now()
}
}
})
yield servers
}
}