Awesome Open Source
Awesome Open Source


CI Status Version License Platform Documentation codecov

Asynchronous is a one-stop shop for your async needs, the user can use the subspecs to automatically run the Async code using completion handlers, BrightFutures, HydraAsync, PromiseKit, Promises, then and much more!

The ultimate answer to which asynchronous abstraction should I use in my API?, just use Asynchronous and give your users freedom without the headache of adding several dependencies and different abstractions to your code!


To run the example project, clone the repo, and run pod install from the Example directory first.

Sample use case

Let's say you're writing a mobile SDK that does asynchronous tasks (such as HTTP requests), just like the following:

func getUser(by id: String) -> Async<User> {
    return Async { resolve, reject in
        let url = APIRouter.route(for: .users, id: id)
        let request = URLRequest(url: url)

        let session = URLSession.shared
        let task = session.dataTask(with: request) { data, response, error in
            if let error = error {
                reject(error) // You can also `throw error`!
            } else if let data = data {
                do {
                    let user = try JSONDecoder().decode(User.self, from: data)
                } catch (let error) {
            } else {
                reject(NSError(domain: "my.domain", code: 123))

That's it! You simply create an Async and call resolve or reject once your task is finished.

The user can either add a completion block or use their favorite asynchronous abstraction:


apiClient.getUser(by: id).async { user, error in
    if let user = value {
        userName.text =
    } else {
        display(error: error)


apiClient.getUser(by: id).promise()
.then { user in
    userName.text =
}.catch { error in
    display(error: error)


Async is available through CocoaPods. To install it, simply add the following line to your Podfile:

pod 'Asynchronous'

Available Subspecs

Name Description
Asynchronous/Alamofire Alamofire support
Asynchronous/BrightFutures BrightFutures support
Asynchronous/HydraAsync HydraAsync support
Asynchronous/PromiseKit PromiseKit support
Asynchronous/Promises Promises support
Asynchronous/Then then support


Contributions are encourajed and appreciated! For more information take a look at


  • [ ] ReactiveSwift support
  • [x] RxSwift support
  • [x] Tests
  • [x] Better documentation
  • [ ] Improved README
  • [x] Remove BrightFutures dependency
  • [ ] Carthage support
  • [ ] SwiftPM support
  • [x] Fix unnecessary error type erasures
  • [ ] Fix tuple gate in Asyncify
  • [ ] Improve Example project


Francesco Perrotti-Garcia, [email protected]


Asynchronous is available under the MIT license. See the LICENSE file for more info.

Get A Weekly Email With Trending Projects For These Topics
No Spam. Unsubscribe easily at any time.
swift (7,544
cocoapods (561
asynchronous (228
promises (65
futures (46
swift-4 (43
async-programming (15

Find Open Source By Browsing 7,000 Topics Across 59 Categories