diff --git a/plugins/catalog-backend/src/service/response/write.ts b/plugins/catalog-backend/src/service/response/write.ts index 950dd99ba7..0962ee15d1 100644 --- a/plugins/catalog-backend/src/service/response/write.ts +++ b/plugins/catalog-backend/src/service/response/write.ts @@ -78,15 +78,18 @@ export async function writeEntitiesResponse( const prefix = first ? '[' : ','; first = false; - await new Promise((resolve, reject) => { - res.write(prefix + entity, 'utf8', err => { - if (err) { - reject(err); - } else { - resolve(err); - } + const needsDrain = !res.write(prefix + entity, 'utf8'); + if (needsDrain) { + await new Promise(resolve => { + const cont = () => { + res.off('drain', cont); + res.off('close', cont); + resolve(); + }; + res.on('drain', cont); + res.on('close', cont); }); - }); + } } res.end(`${first ? '[' : ''}]${trailing}`); }