docs: function PromiseProxy(target, schema, self = PromiseProxy) {
    const handler = {
      apply(method, receiver, args) {
        const index = schema
        if (args[index] != null) {
          return Reflect.apply(method, receiver, args)
        }
        return new Promise(resolve => Reflect.apply(method, receiver, insert(args, resolve, index)))
      },
      get(target, key) {
        const prop = target[key]
        if (schema.hasOwnProperty(key)) {
          return self(prop, schema[key])
        }
        return prop
      },
    }
    return new Proxy(target, handler)
  }