Melhoria em função nodeJs

Bom dia,

Pessoal, tenho a seguinte função:

return new Promise((resolve, reject) => {
	Ftbjanbp.find(ctx.args.filter, (err, results) => {
		if (err) return reject(err);
		
		let valueVisualize = filters.selectVisualize == 1 ? '__data.FTBJANCIACODCIA' : '__data.FTBJANCIACODCIA_DOA';
		
		let resulted = results.map((e) => {
			return { ...e, data: moment(e.FTBJANDATULTAG).format('DD/MM/YYYY') };
		})
		
		if (filters.selectVisualize != 3) {
			let res = _.chain(resulted).groupBy("data").map((value, key) => ({
				date: key,
				visualization: _.chain(value).groupBy(valueVisualize).map((value, key) => ({
					valueVisualize: key.trim(),
					dataRegister: value[0].data,
					intervals: _.chain(value).groupBy("__data.FTBJANELA").map((value, key) => ({
						name: key.trim(),
						types: _.chain(value).groupBy("__data.FTBJANTIPPORT").map((value, key) => ({
							name: key == '0' ? 'Inter-Prestadora' : key == '1' ? 'Intrisica' : 'Desconexão',
							total: value[0].__data.FTBJANQTDEBP,
						})),
					})),
				}))
			}))
			
			return resolve(res);
		} else {
			let res = _.chain(resulted).groupBy("data").map((value, key) => ({
				date: key,
				visualization: _.chain(value).groupBy('__data.FTBJANELA').map((value, key) => ({
					valueVisualize: key.trim(),
					types: _.chain(value).groupBy("__data.FTBJANTIPPORT").map((value, key) => ({
						name: key == '0' ? 'Inter-Prestadora' : key == '1' ? 'Intrisica' : 'Desconexão',
						total: value.map((e) => ({
							total: e.__data
						}))
					})),
				}))
			}))
			
			return resolve(res);
		}
	});
});

Gostaria de saber se é possível eu separar a logica do ‘group’ em uma outra função a parte, para que não fique tudo no retorno da promisse e o código fique mais organizado

se eu fosse você eu separava, está com muita responsabilidade