What is Promise?
To me, Promise is just to make async call in a linguistic representation for human read.
Think about it:

somethingAsync{ ok in
    use(ok)
    ...
    anotherAsync{ ok2 in
       ...
    }
}
It help when we can organise them into:
when{ done in
    somethingAsync{ value in
        done(value)
    }
} ==> 
(ok:{ value in
    anotherAsync(value)
},fail:{
    print("omg")
})
Even stronger:
when{ done in
    somethingAsync{ value in
        done(value)
    }
} <== { keywords in
    return { c:String?->() in 
        anotherAsync{
            let value = findNumberWithKeyword(keyword)
            c(value)
        }
    }
} <== { numericString in
    return { c:Double?->() in
        if canConvertToNumber(numericString) {
            let converted = toDouble(numericString)
            c(converted)
        }else{
            c(nil)
        }
    }
} ==> 
(ok:{ value in
    /// lets use the value!!
},fail:{
    /// ops... 
})

And why you should clap your hand here is: There are only functions!
No class, no structure, pure function.
Ok, time to get your hand dirty, try to implement it in swift.
I will post out my solution later. See you.

Original post from my previous site: http://povoq.blogspot.com/2017/07/promise-in-swift-write-your-own.html