def wipe_avatar(self):
        """
        Remove all avatar data stored on the server.

        If :attr:`synchronize_vcard` is true, the vCard avatar is
        disabled even if disabling the PEP avatar fails.

        This is equivalent to :meth:`disable_avatar` for vCard-based
        avatars, but will also remove the data PubSub node for
        PEP avatars.

        This method does not error if neither protocol is active.

        :raises aioxmpp.errors.GatherError: if an exception is raised
            by the spawned tasks.
        """

        @asyncio.coroutine
        def _wipe_pep_avatar():
            yield from self._pep.publish(
                namespaces.xep0084_metadata,
                avatar_xso.Metadata()
            )
            yield from self._pep.publish(
                namespaces.xep0084_data,
                avatar_xso.Data(b'')
            )

        with (yield from self._publish_lock):
            todo = []
            if self._synchronize_vcard:
                todo.append(self._disable_vcard_avatar())

            if (yield from self._pep.available()):
                todo.append(_wipe_pep_avatar())

            yield from gather_reraise_multi(*todo, message="wipe_avatar")
Remove all avatar data stored on the server.

        If :attr:`synchronize_vcard` is true, the vCard avatar is
        disabled even if disabling the PEP avatar fails.

        This is equivalent to :meth:`disable_avatar` for vCard-based
        avatars, but will also remove the data PubSub node for
        PEP avatars.

        This method does not error if neither protocol is active.

        :raises aioxmpp.errors.GatherError: if an exception is raised
            by the spawned tasks.