承诺承诺太多的错误?

我在文档中写下这种风格的承诺:
Q.fcall(promisedStep1) .then(promisedStep2) .then(promisedStep3) .then(promisedStep4) .then(function (value4) { // Do something with value4 }) .catch(function (error) { // Handle any error from all above steps }) .done();

catch子句将会发现包括拼写错误在内的任何错误。 但是,根据nodejs dos:

由于JavaScript在JavaScript中的工作原理,几乎没有任何方法可以安全地“捡起你离开的地方”,而不会泄漏引用或创build其他某种不明确的状态。 应对抛出的错误的最安全的方法是closures该过程。

如果我们在callback风格中编写代码,而不是承诺风格,则会抛出一些types的错误
这真让我困惑。 在诺言书写时,我应该如何避免泄漏的引用。

谢谢〜

该示例显示了良好的承诺链,包括使用.done()来确保任何未处理的exception从承诺链抛出到外部应用程序。 至于引用和error handling:承诺链只保证将错误将被转发到.catchcallback。 如果在抛出错误的时候没有办法清理状态,那么你运气不好。 例如

 Q.fncall(function firstStep() { var fs = open file reference foo.bar; // generates ReferenceError }).then(function somethingElse() { ... }).catch(function (err) { // we have caught ReferenceError // but we cannot clean up open fs reference! }).done();