see: https://github.com/tildeio/rsvp.js/blob/master/lib/rsvp.js