create( { check, config, cwd = __dirname, next, script, targets } ) {

        if ( targets && ! config ) config = targets[ 0 ];

        /** @returns {Promise<T>} */

        async function executer() {

            const run = () => cp.run( "node", [ Bundler.cli, Bundler.argv, script ], { cwd } );

            await check ? refresh( check, config.output, run ) : run();

            return bluebird.method( next )();

        }

        Object.defineProperty( executer, Bundler.property, {
            get: () => targets || [ BundlerTarget( config ) ],
        } );

        return executer;

    }
This will create an async function that first executes the bundler if required, then calls `next`

@template T
@param {{check?: string, config: {}, cwd?: string, next: () => T, script: string, targets?: {}[]}} param0