choo-promise
Use promises in effects and subscriptions.
choo-promise 
A plugin for choo (or barracks) that allows you to return promises to end effects and subscriptions. The send function passed to effects and subscriptions is also promisified.
Installing
npm install choo-promise
Example usage
var choo = require('choo')
var chooPromise = require('choo-promise')
var Bluebird = require('bluebird')
var app = choo()
// You can optionally provide your own promise implementation
app.use(chooPromise({ Promise: Bluebird }))
app.model({
state: { value: null }
effects: {
updateValue: async (state, data, send) => {
var value = await fetchSomeData(data)
return send('setValue', { value })
}
},
subscriptions: {
initValue: (send) => {
var value = await fetchSomeData(data)
return send('setValue', { value })
}
}
})
Isn't there another package that does this?
Yup! There's barracks-promisify-plugin, which does pretty much exactly the same thing. The only differences (at the time of writing) are:
barracks-promisify-pluginuses ES6 features, which you may or may not care about (some tools don't yet support ES6 syntax without pre-transpiling, like uglify).choo-promisedoesn't use ES6 features.choo-promisegives you the option to provide your own Promise implementation (like Bluebird) if you want. It will default to the native Promise.