promise.js provides a monad implement of promise
Merge branch 'Functional' into oAuth-dev
Use monad instesd in auth.js