Não seria melhor testar se a variável "connection" possui valor antes de chamar o método "window.indexedDB.open(dbName, version);" ? .Ex:
static getConnection(){
return new Promise((resolver, reject) => {
//Teste sugerido
if (_connection){
resolver(_connection);
return;
}
var openRequest = window.indexedDB.open(dbName, version);
openRequest.onupgradeneeded = e => {
ConnectionFactory._createStores(e.target.result);
console.log('Upgrade DB...');
};
openRequest.onsuccess = e => {
_connection = e.target.result;
_close = _connection.close.bind(_connection);
_connection.close = () => {
throw new Error('Utilize ConnectionFactory.closeConnection() para fechar a conexão');
}
resolver(_connection);
};
openRequest.onerror = e => {
console.log(e.target.error);
reject(e.target.error.name);
};
});
}
Do outro modo, testando a variável "connection" somente no método "onsuccess" do openRequest, não estaríamos criando diversas conexões porém retornando sempre a primeira conexão criada?