Future<Result<int, String, T?>> setItem(T item, {Future<Result<int, String, T?>> Function(T)? alternativeFunc});