An asynchronous either monad compatible with Folktale result
npm install fantasy.result.async
javascript
const Result = require('folktale/result');
const isDigit = (character) =>
'0123456789'.split('').includes(character);
const digit = (input) => {
const character = input.slice(0, 1);
const rest = input.slice(1);
return isDigit(character) ? Result.Ok([character, rest])
: / otherwise / Result.Error(Expected a digit (0..9), got "${character}");
};
Promise.resolve('012').toResult()
.chain(digit)
.mergeP()
.then(console.log)
``