simplified it, and we still need defer method since

if the task is running too fast, immediately after the
promise is created, it could have no access to outside.

see: https://travis-ci.org/godfat/rest-core/jobs/24036617