javascript – Como alterar o valor do setTimeout por dentro da função?

Perdoem-me se for uma pergunta repetida, eu realmente não encontrei pelo site algo que funcionasse nesta ocasião. Tento alterar o valor do tempo da função setTimeout, mas o retorno sempre ocorre após três segundos, independente de outro tempo já ter sido estabelecido. Existe uma maneira em que eu posso alterar este tempo internamente na função?

var tempo = 3000
setTimeout(() => {
 tempo = 1000
 console.log("retorno")
}, tempo)