import { Actual } from "base/Actual"; import { Message } from "base/Message"; import { Applied } from "components/Applied"; import { Catch } from "components/Catch"; import { MaybeMessage, MessageType } from "types/MessageType"; /** * If base returns error then * default will return default value * * @url https://silentium.pw/article/default/view */ export function Default( $base: MessageType, _default: MaybeMessage, ) { const $default = Actual(_default); const $defaultAfterError = Applied(Catch($base), () => $default); return Message(function DefaultImpl(resolve) { $base.then(resolve); $defaultAfterError.then(resolve as any); }); }