<button id="promo_button" disabled>Кнопка</button>
....
//Проверяем локальный кэш на сайте, и обращаемся к БД в случае его остуствия
if (!localStorage.promo_code) {
Check_BD_Promise = new Promise( ......... );
else if (localStorage.promo_status == "in database") {
document.getElementById("promo_button").disabled = false;
}
.....
//Запоминаем ответ БД
Check_BD_Promise.then((code, status)=> //после обращения к БД
localStorage.promo_code = code; //"XYZ";
localStorage.promo_status = status; //"in database"; //для примера
);
.....
//При нажатии на кнопку тоже что-то делаем в соответствии с бизнес-логикой
document.getElementById("promo_button").addEventListener("click", ()=>{
......... //отправка запроса на изменение бд
if (localStorage.promo_code) {
localStorage.promo_status = "already not in database";
}
});