do-try-tuple
Version:
Catches errors and rejected promises, returns tuple
19 lines (18 loc) • 588 B
JavaScript
import { isPromise } from './isPromise.js';
/** @since 3.0.0 */
export const success = (value) => [true, undefined, value];
/** @since 3.0.0 */
export const failure = (err) => [false, err, undefined];
export const safe = (promise) => promise.then(success, failure);
export const doTry = (fn) => {
try {
const result = fn();
return isPromise(result) ? safe(result) : success(result);
}
catch (error) {
return failure(error);
}
};
export const isFailure = (result) => !result[0];
export const isSuccess = (result) => result[0];
export default doTry;