declare type CallFn =
    & ContextCallFn
    & (<R, Fn: Fn0<R>>(fn: Fn, ...rest: Array<void>) => CallEffect0<null, Fn>)
    & (<T1, R, Fn: Fn1<T1, R>>(fn: Fn, t1: T1, ...rest: Array<void>) => CallEffect1<null, Fn, T1>)
    & (<T1, T2, R, Fn: Fn2<T1, T2, R>>(fn: Fn, t1: T1, t2: T2, ...rest: Array<void>) => CallEffect2<null, Fn, T1, T2>)