have each() return a deferred instead of a channel