code: def wipe_avatar(self):
          
  
          @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")
docs: 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.