Guest User

Untitled

a guest
Apr 23rd, 2018
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.54 KB | None | 0 0
  1. const wait = (time: number) => new Promise((resolve) => setTimeout(resolve, time));
  2.  
  3. type InsistΛ = () => boolean | Promise<boolean>;
  4.  
  5. const insist = (λ: InsistΛ, time: number = 200): Promise<void> => {
  6. return new Promise((resolve) => {
  7. const insist = () => Promise.resolve(λ())
  8. .then((success: boolean) => {
  9. if (!success)
  10. throw new Error('Success not achieved. Keep insisting.');
  11. resolve();
  12. })
  13. .catch(() => wait(time).then(insist));
  14. return insist();
  15. });
  16. };
  17.  
  18. export { insist as default, InsistΛ }
Add Comment
Please, Sign In to add comment