¿La mejor manera de prevenir la condición de carrera en múltiples llamadas a la API de chrome.storage?

Algo solicita una tarea.Otra cosa saca la lista de tareas del almacenamiento y verifica si hay tareas allí.Si hay tareas, se elimina una y la "lista de tareas" más pequeña se vuelve a almacenar.

Entre los pasos 2 y 3 a.condición de carrera puede ocurrir si se producen múltiples solicitudes, y la misma tarea se servirá dos veces.

¿Es la resolución correcta de "bloquear" la "tabla de tareas" mientras que una sola tarea está "desprotegida" para evitar otras solicitudes?

¿Cuál es la solución con el menor impacto en el rendimiento, como el retraso de la ejecución, y cómo se debe implementar en javascript con la API chrome.storage?

Algún código por ejemplo:

function decide_response ( ) {
    if(script.replay_type == "reissue") {
            function next_task( tasks ) {
                var no_tasks = (tasks.length == 0);
                if( no_tasks ) {
                    target_complete_responses.close_requester();
                }
                else {
                    var next_task = tasks.pop();
                    function notify_execute () {
                        target_complete_responses.notify_requester_execute( next_task );
                    }
                    setTable("tasks", tasks, notify_execute);
                }
            }
            getTable( "tasks", next_tasks );
    ...
    }
...
}

Respuestas a la pregunta(1)

Su respuesta a la pregunta