use custom jspromise