program askmom; {$mode objfpc} { Translated from https://scotch.io/tutorials/javascript-promises-for-dummies } uses browserconsole, JS, Web; var isMomHappy : Boolean = False; Procedure LetsAskMom; procedure MomDecides (resolve, reject : TJSPromiseResolver); begin if IsMomHappy then Resolve(New(['brand','Samsung','Color','Black'])) else Reject(TJSError.New('Mom is not happy')); end; Function Disappointed(aValue : JSValue): JSValue; begin Writeln('No present because: ',aValue); end; Function Showpresent(aValue : JSValue): JSValue; begin Writeln('Received : ',aValue); end; Var willIGetNewPhone : TJSPromise; begin TJSPromise.New(@MomDecides). _Then(@ShowPresent). Catch(@Disappointed); end; begin Writeln('Did something bad, making mom unhappy'); isMomHappy:=False; LetsAskMom(); Writeln('Made up with mom, making her happy again'); isMomHappy:=True; LetsAskMom(); end.