в своих попытках вы используете
await configPool.get('allImages', async (err, reply) => {
во-первых, .get
не возвращает обещание, поэтому await
в этом нет смысла
во-вторых, вы не используете ожидание внутриобратный вызов, поэтому нет необходимости делать это async
Кажется, ваш код может быть упрощен
Во-первых, поскольку вы хотите вернуть обещание, оберните configPool.get
в обещание, которое будетбыть решена / отклонена в обратном вызове
после этого, это просто вопрос цепочки обещаний, так как ваш код подразумевает, что imageDetailsCache
возвращает обещание, это просто как:
function allImageData() {
return new Promise((resolve, reject) => {
redisPools.configPool.get('allImages', (err, reply) => err ? reject(err) : resolve(reply));
})
.then(reply => {
if (reply === null) return Promise.reject(null);
const imageDetails = JSON.parse(reply);
return imageDetailsCache(imageDetails.allImages);
})
.then(data => ({data}))
.catch(() => Promise.reject({data:{}}));
}