Opa, você encontrou o problema na propria descrição desse tópico!
A função do axios está sendo executada "em paralelo" ao return token, não está esperando o axios executar para seguir com o return, você pode seguir com o código da seguinte maneira:
// colocar await antes de chamar o axios.post!
await axios.post(url_to_get_token, data_to_get_token, config_to_get_token)
.then(response => {
console.log("Response:", response.data);
return response.data.access_token; // retornar o token assim que receber na requisição
})
.catch(error => {
console.log('Error in request:', error)
return null; // retornar nulo, caso a requisição tenha falhado
})
Uma coisa a se notar, você tem que definir a função agora, como sendo async. Então vai fazer da seguinte forma:
exports.token = function async(client_id, client_secret) {}