'use strict'

class Async {
  run (executors) {
    const args = Array.from(arguments).slice(1)
    return new Promise(resolve => resolve(executors.async.apply(null, args)))
  }

  all (arr) {
    return Promise.all(arr)
  }

  returns (value) {
    return Promise.resolve(value)
  }

  throws (reason) {
    return Promise.reject(reason)
  }
}
module.exports = Async