docs: async def execute(query):
      """Execute *SELECT*, *INSERT*, *UPDATE* or *DELETE* query asyncronously.
  
      :param query: peewee query instance created with ``Model.select()``,
                    ``Model.update()`` etc.
      :return: result depends on query type, it's the same as for sync
          ``query.execute()``
      """
      if isinstance(query, (peewee.Select, peewee.ModelCompoundSelectQuery)):
          coroutine = select
      elif isinstance(query, peewee.Update):
          coroutine = update
      elif isinstance(query, peewee.Insert):
          coroutine = insert
      elif isinstance(query, peewee.Delete):
          coroutine = delete
      else:
          coroutine = raw_query
  
      return (await coroutine(query))