Some promises, particularly Q promises, provide a valueOf method that attempts to synchronously return the fulfilled value of the promise, or returns the unresolved promise itself. Attempting to break a fulfillment value out of a promise appears to be necessary to break cycles between Q and When attempting to coerce each-other's promises in an infinite loop. For promises that do not implement "valueOf", the Object#valueOf is harmless. See: kriskowal/q#106
… jshintrc and editorconfig
…kes defer.cancel() parallel with defer.resolve/reject. Remove unnecessary returns in timeout.
…and reorg README