code: async def remove(self, path):
          
          if await self.exists(path):
              info = await self.stat(path)
              if info["type"] == "file":
                  await self.remove_file(path)
              elif info["type"] == "dir":
                  for name, info in (await self.list(path)):
                      if info["type"] in ("dir", "file"):
                          await self.remove(name)
                  await self.remove_directory(path)
docs: :py:func:`asyncio.coroutine`
  
          High level remove method for removing path recursively (file or
          directory).
  
          :param path: path to remove
          :type path: :py:class:`str` or :py:class:`pathlib.PurePosixPath`