英語のStackoverflowで恐縮ですが、Javascriptでは関数に引数に配列が渡されると、パラメータとして分割して処理する事を期待することが多いらしいです。なのでapply()を使えと書いてます。
http://stackoverflow.com/a/5627301/857273
今回の例でd.resolve(array)とするとarrayが破壊されたように見えてたのは、パラメータとして分割処理が起きたためではないでしょうか?そうであれば、
coffeescript
1d.resolve
2 result : openTempEntities
というようにハッシュを使うと解決できたりするかもしれません。(未確認ですがなにかの助けになればと思い、回答します。)