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