Если еще актуально, то второй пример не работает из-за того что path передается через параметр, а не передан явной строкой в require. Покажу на своем примере, вот так все работает:
export const loadFoo = () => new Promise<any>((resolve, reject) => {
require.ensure(["Foo/path"], require => {
resolve(require("Foo/path"));
}, error => reject(error));
});
А вот так нет:
export const load = (path: string) => new Promise<any>((resolve, reject) => {
require.ensure([path], require => {
resolve(require(path));
}, error => reject(error));
});