Consider this [gist](https://melange.re/unstable/playground/?language=OCaml&code=bGV0IHNsZWVwIG1zID0KICBKcy5Qcm9taXNlLm1ha2UgQEAgZnVuIH5yZXNvbHZlIH5yZWplY3Q6XyAtPgogIGlnbm9yZSAoSnMuR2xvYmFsLnNldEludGVydmFsIChmdW4gKCkgLT4gKHJlc29sdmUgKCkgW0Bic10pKSBtcyk%3D&live=off): ``` let sleep ms = Js.Promise.make @@ fun ~resolve ~reject:_ -> ignore (Js.Global.setInterval (fun () -> (resolve () [@bs])) ms) ``` which errors with ``` Line 3, 44: Error This expression has type ('a -> unit) Js__Js_internal.Fn.arity1 but an expression was expected of type 'b Js__Js_internal.Fn.arity0 ``` The issue is that Melange treats `f ()[@bs]` syntax as 0-arity application. If we do ``` let unit = () in f unit [@bs] ``` then it compiles. I think 0-arity applications should have another syntax.