node.jsのJavaScriptより下で実行している間は疑いがあります。未処理の拒否保持参照
var z = new Image();
function x()
{
var promise = new Promise();
return promise;
}
var promise = x();
promise.then(function(){});
..........
promise.reject(z);
x()が返す約束にリジェクトハンドラは追加されていません。しかし、レスポンス値zのリジェクトを送信するのであれば、zがガベージコレクションされるのか、それとも未処理の拒否によって保持されるのかについては、いつ参照する必要があります。しかし、約束のためにキャッチ/リジェクトハンドラを追加すると、zのガベージコレクションが発生しています。
未処理の拒否に渡されたときに、Zでガベージコレクションが発生しない理由を明確にしてください。
'z'は、モジュールのトップレベルでインスタンス化されているので、ファイルにグローバルなように見えます。つまり、グローバルな場所にまだ参照が保持されているため、ガベージコレクションされません。ガベージコレクションについての詳細はこちら(https://strongloop.com/strongblog/node-js-performance-garbage-collection/) – peteb