         stop = false
         arr.every (k, idx) ->
             a = val(k)
-            unsub = unwrap a, false, (ua, isError) ->
+            unwrap a, false, (ua, isError) ->
                 return if stop
                 if isError
                     stop = true


# Recursively unwrap the given value. Callback when we got to the
# bottom of it.
unwrap = (v, isError, cb, ended = true, prevUnsub) ->
    unsub = null
    if v instanceof X
        al = v._always immediate:true, (v, isError) ->
            unwrap v, isError, cb, false, unsub
            return null # important or we get endless loops
        unsub = -> prevUnsub?(); al._doEnd()
        v.onEnd -> unwrap NVA, false, cb, ended
    else if isThenable v
        v.then ((x) -> unwrap x, false, cb, ended), ((e) -> unwrap e, true, cb, ended)
    else
        cb v, isError, ended
    unsub || prevUnsub

# retry the promise producing function f at most max times.
X.retry = (max, delay, f) ->

                done++ if r k, idx, ua
                if arr.length == done
                    stop = true
                    return thenResolver.call _this, fx, fe, result, false, cb
                null
            return true
