function printRed() {
console.log('red')
}
function printGreen() {
console.log('green')
}
function printYellow() {
console.log('yellow')
}
function lightsOn(fn, delay) {
return new Promise((resolve, reject) => {
setTimeout(() => {
fn()
resolve()
}, delay)
})
}
function start() {
Promise.resolve()
.then(() => lightsOn(printRed, 2000))
.then(() => lightsOn(printGreen, 3000))
.then(() => lightsOn(printYellow, 1000))
.then(() => start())
}
start()