function removeDublication(array, cb) {
  if (!array) {
    throw new Error("No array has been provided.");
  }
  if (!cb) {
    throw new Error("No callback has been provided.");
  }
  return array.reduce(
    (acc, value) => {
      const isExist = acc.some(v => cb(v, value));
      if (!isExist) {
        acc = [...acc, value];
      }
      return acc;
    },
    [array[0]]
  );
}