Почему API обещаний fs узла не рекомендуется?

#node.js #fs

Вопрос:

Часть моего приложения включает в себя периодическое удаление большой папки и некоторых строк, относящихся к файлам в этой папке в базе данных.
Для этого я думал использовать этот код:

 const { rmdir } = require('fs/promises');

... begin transaction
... remove database rows
await rmdir(dir, { recursive: true });
... end transaction
 

Причина, по которой я хочу использовать API обещаний вместо rmdirSync (который останавливает весь сервер), заключается в том, что я хочу, чтобы сервер продолжал принимать запросы, пока операционная система занята удалением папки. Я знаю, что мог бы просто использовать api обратного вызова и просто завершить транзакцию до удаления папки, но это может привести к несоответствиям, а также не приведет к возможным ошибкам. (файлы все еще могут обслуживаться express.static, в то время как строки базы данных уже отсутствуют)

Но я прочитал в этой документации: https://nodejs.org/api/fs.html#fs_callback_example Что использование API Promise не рекомендуется в пользу API обратного вызова.

Итак, вот мои вопросы:

  • Почему медленнее использовать API обещания вместо API обратного вызова?
  • Насколько медленнее?
  • Могу ли я просто сделать это вместо этого:
     const { unlink } = require('fs');
    
    ... begin transaction
    ... remove database rows
    await new Promise((res,rej)=>{
      unlink('/tmp/hello', (err) => {
         resolve()
      })
    });
    ... end transaction
     

Комментарии:

1. Это объясняется здесь: «Версии API-интерфейсов модуля fs на основе обратного вызова предпочтительнее, чем использование API-интерфейсов promise, когда требуется максимальная производительность (как с точки зрения времени выполнения, так и выделения памяти)». На другие вопросы вы можете ответить сами, проведя эксперименты….

2. Ну, это не объясняет, почему это так или насколько это серьезно. Но да, я, вероятно, должен просто испытать. Все равно было бы неплохо, если бы они объяснили это подробнее, хотя