only build a promise if a cb was not passed in. Fixes #708
fix global leak. Fixes #690
bind model context to lifecycle callback not only its prototype