docs: function(func, ...params){
      return new Promise((resolve, reject)=>{
        params.push(function(){
          if(arguments[0] instanceof Error){
            reject(arguments[0])
          }else{
            resolve(arguments.length == 1 ? arguments[0] : arguments[1])
          }
        })
        func.apply(null, params)
      })
    }