google/promises

Confused when retry a Promise variable

EkkoG opened this issue · 0 comments

EkkoG commented

With the example in the doc, https://github.com/google/promises/blob/master/g3doc/index.md#retry

retry method wraps a method that always returns a new Promise, so when the Promise of the first time method failed, retry will call the fetch method again and create a new Promise, and all work perfectly.

But if retry a Promise variable, things get wired.

let p = Promise<Int> { resolve, reject in
    print("promise")
    reject(NSError(domain: "promise", code: 1, userInfo: nil))
}

retry {
    p
}.then { _ in
    print("then")
}.catch { _ in
    print("catch")
}

code wrapped by Promise p will only run once, not twice, does this is a bug or feature?