lazy-either
Version:
A lazy implementation of the Fantasy Land Either type
13 lines (10 loc) • 440 B
JavaScript
const LazyEither = require('..')
const S = require('sanctuary')
//:: (Number, a) -> LazyEither (Either e a)
let delayed = (ms, val) => LazyEither(resolve => {
ms > 1000 ? resolve(S.Left(Error('Delay too long')))
: setTimeout(() => resolve(S.Right(val)), ms)
})
delayed(500, 'Hello').value(console.log) // returns Right('Hello')
delayed(1001, 'Hey').value(console.log) // returns Left(Error('Delay too long'))