Reduce com gropu nodeJs

Bom dia, tenho uma aplicação backend em node que retorna o seguinte array:

let res= [
           {
                codigo: '0341',
                codigo_1: '0320',
                visao: '14',
                total: 24,
                data: '201502'
            },
            {
                codigo:'0341',
                codigo_1:'0320',
                visao:'14',
                total:25,
                data: '201504'
            },
            {
                codigo:'0321',
                codigo_1:'0320',
                visao:'14',
                total:31,
                data: '201506'
            },
            {
                codigo:'0341',
                codigo_1:'0320',
                visao:'14',
                total:55,
                data: '201502'
            },
        ]

O atributo data é composto por ano/mês, não consigo alterar pois vem da base dessa forma

Preciso do retorno agrupado inicialmente por data e depois por código somando os totais, tendo o seguinte retorno:

 [
      {
          data: '201502'
          codigo: '0341'
          total: 79
      },
      {
          data: '201506'
          codigo: '0321'
          total: 31
      },
      {
          data: '201504'
          codigo: '0320'
          total: 25
      }
  ]

Já tentei alguma formas, mas sem sucesso. Segue:

const resultadosAgrupados = res.reduce(function (valorAcumulador, valorArray) {
            if (!valorAcumulador[valorArray.data]) {
                valorAcumulador[valorArray.data] = { ...valorArray };
                return valorAcumulador;
            }
            valorAcumulador[valorArray.data].total += valorArray.total;
            return valorAcumulador
        }, [])

E também usando o uniqBy:

let teste = _.uniqBy(res, 'data')

Obrigado.