def _call_and_serialize(cls, method, data, refresh=False):
        """Call the remote method with data, and optionally refresh.

        Args:
            method (callable): The method on the Authenticated Five9 object
                that should be called.
            data (dict): A data dictionary that will be passed as the first
                and only position argument to ``method``.
            refresh (bool, optional): Set to ``True`` to get the record data
                from Five9 before returning the record.

        Returns:
            BaseModel: The newly created record. If ``refresh`` is ``True``,
                this will be fetched from Five9. Otherwise, it's the data
                record that was sent to the server.
        """
        method(data)
        if refresh:
            return cls.read(method.__self__, data[cls.__uid_field__])
        else:
            return cls.deserialize(cls._get_non_empty_dict(data))