title: Purpose of `return` Statement and `callback` Reference in Gulp Task
body: <p>I was having trouble getting gulp <code>run-sequence</code> to execute both functions that i gave it (it would only execute one of them. I had something like this:</p>
  
  <pre><code>gulp.task('wire', function(){
    gulp.src('./index.html')
      .pipe(wiredep())
      .pipe(gulp.dest('.'));
  });
  
  var filesToInject = ['./app/**/*.js', './app/**/*.css'];
  gulp.task('inject', function (){
    var target = gulp.src('./index.html');
    var sources = gulp.src(filesToInject, {read: false});
    return target.pipe(inject(sources))
      .pipe(gulp.dest('.'));
  });
  
  gulp.task('wire-inject',  function(callback){
      sequence('wire', 'inject', callback);
  });
  </code></pre>
  
  <p>That would only run the <code>inject</code> task. Only when I added a <code>return</code> before <code>gulp.src</code> in the <code>wire</code> task would it execute. I also added callback in both function params and passed it to the last pipe in both tasks per <a href="https://www.npmjs.com/package/run-sequence" rel="nofollow">the documentation</a>.</p>
  
  <pre><code>gulp.task('wire', function(callback){
    gulp.src('./index.html')
      .pipe(wiredep())
      .pipe(gulp.dest('.'), callback);
  });
  
  var filesToInject = ['./app/**/*.js', './app/**/*.css'];
  gulp.task('inject', function (callback){
    var target = gulp.src('./index.html');
    var sources = gulp.src(filesToInject, {read: false});
    return target.pipe(inject(sources))
      .pipe(gulp.dest('.'), callback);
  });
  </code></pre>
  
  <p>That did not throw any errors, however it doesn't change anything if I take it out. What does this return statement do that magically makes my sequence run completely. What are these callbacks in the documentation that I just pass a reference to with out parentheses to execute them? Do I still need them even though they seemingly do nothing?</p>