title: What about this combination of gulp-concat and lazypipe is causing an error using gulp 4?
body: <p>I'm upgrading from Gulp 3 to 4, and I'm running into an error:</p>
  
  <pre><code>The following tasks did not complete: build
  Did you forget to signal async completion?
  </code></pre>
  
  <p>I understand what it's saying, but can't understand why this code is triggering it.</p>
  
  <p>Error or not, the task completes (the files are concatenated and written to dest). Executing the same code without lazypipe results in no error, and removing the concatenation within lazypipe also fixes the error.</p>
  
  <p>Wrapping the whole thing in something that creates a stream (like merge-stream) fixes the issue. I guess something about the interaction between gulp-concat and lazypipe is preventing a stream from being correctly returned.</p>
  
  <p>Here's the (simplified) task:</p>
  
  <pre><code>gulp.task('build', function() {
      var dest = 'build';
  
      var buildFiles = lazypipe()
          .pipe(plugins.concat, 'cat.js') // Task will complete if I remove this
          .pipe(gulp.dest, dest);
  
      // This works
      // return gulp.src(src('js/**/*.js'))
      //     .pipe(plugins.concat('cat.js'))
      //     .pipe(gulp.dest(dest));
  
      // This doesn't (unless you wrap it in a stream-making function)
      return gulp.src(src('js/**/*.js'))
          .pipe(buildFiles());
  });
  </code></pre>
  
  <p>Any advice appreciated!</p>