package promises import "syscall/js" type JSWrapper func(this js.Value, args []js.Value) (any, error) func PromisifyGoFunc(caller JSWrapper) js.Func { return js.FuncOf(func(this js.Value, args []js.Value) any { return NewGlobal("Promise", js.FuncOf(func(_ js.Value, promArgs []js.Value) any { resolve := promArgs[0] reject := promArgs[1] go func() { val, err := caller(this, args) if err != nil { reject.Invoke(GoErrorToJSError(err)) } else { jsVal, jsErr := ValueOf(val) if jsErr != nil { reject.Invoke(GoErrorToJSError(jsErr)) } else { resolve.Invoke(jsVal) } } }() return nil })) }) }