I think we'd be best with `resolve<T> (t : T)` and `resolve<void> ()`. That way the type-checker will fix bad uses of void promises.