added promise and spec for promise test