docs: def syncify(*types):
      """
      Converts all the methods in the given types (class definitions)
      into synchronous, which return either the coroutine or the result
      based on whether ``asyncio's`` event loop is running.
      """
      # Our asynchronous generators all are `RequestIter`, which already
      # provide a synchronous iterator variant, so we don't need to worry
      # about asyncgenfunction's here.
      for t in types:
          for name in dir(t):
              if not name.startswith('_') or name == '__call__':
                  if inspect.iscoroutinefunction(getattr(t, name)):
                      _syncify_wrap(t, name)