Como bloquear uma promessa de javascript e retornar o resultado resolvido? [duplicado]

Esta pergunta já tem uma resposta aqui:

Como faço para retornar a resposta de uma chamada assíncrona? 33 respostas

Obviamente, estou entendendo mal algo sobre como as promessas de js são resolvidas ou sobre a semântica do "retorno".

Estou sendo chamado por uma função que espera que eu seja síncrono - para retornar um valor. O cálculo desse valor requer algum código assíncrono (especificamente, o método ForEach em umColeção dstore

O que estou tentando realizar é aproximadamente isso, mas isso não funciona, pois a função mySynchronousFunction não tem valor de retorno.

function mySynchronousFunction() {
   var accumulator = {};
   var myPromise = doAsynchronousThingThatSideEffectsAccumulator();
   // Now my caller is expecting the value of accumulator.
   myPromise.then(function() {return accumulator;})
}

Entendo que o JS precisa permitir implementações de thread único, para que não seja legal bloquear, mas deve haver algum padrão para colar código assíncrono a síncrono, que acabei de perder.

questionAnswers(2)

yourAnswerToTheQuestion