Future<Either<dynamic, A>> catchAsync<A>(final Function0<FutureOr<A>> f) async { try { return right(await f()); } catch (e) { return left(e); } }