title: How does gulp resolve dependencies before running?
body: <p>Assumed there are four tasks 'a', 'b', 'c', 'd' (b depends on c and d; both c and d depend on a), so tasks are run in the following order:</p>
  
  <p>a-> (c, d) -> b</p>
  
  <p>Here's the gulpfile.js which works accordingly:</p>
  
  <pre><code>gulp.task('a');
  gulp.task('c', ['a']);
  gulp.task('d', ['a']);
  gulp.task('b', ['c', 'd']);
  </code></pre>
  
  <p>In spite of task 'c' and 'd' both depend on task 'a', gulp is smart enough to have task 'a' run only once. I'm wondering since tasks run with maximum concurrency, how does gulp resolve dependencies before running?</p>