def METHOD_NAME(self, coordinates, selector, output=None):
    coords = self.reprojection_coordinates.intersect(coordinates, outer=True)
    extra_eval_coords = coordinates.drop(self.reproject_dims or self.reprojection_coordinates.dims)
    if coords.crs != coordinates.crs:
        # Better to evaluate in reproject coordinate crs than eval crs for next step of interpolation
        extra_eval_coords = extra_eval_coords.transform(coords.crs)
    coords = merge_dims([coords, extra_eval_coords])
    if settings["MULTITHREADING"]:
        # we have to do a new node here to avoid clashing with the source node.
        # What happens is that the non-projected source gets evaluated
        # at the projected source coordinates because we have to set
        # self._requested_coordinates for the datasource to avoid floating point
        # lat/lon disagreement issues
        return Node.from_definition(self.source.definition).eval(coords, output=output, _selector=selector)
    else:
        return self.source.eval(coords, output=output, _selector=selector)