title: module.exports cannot be set when passed in as argument
body: <p>I am building my bundle using <a href="http://browserify.org/" rel="nofollow">Browserify</a>.</p>
  
  <p>I have the following <code>service.js</code>:</p>
  
  <pre><code>(function (exports, require) {
  
       // ...
       var Service = function (name, region) {
           this.name = name;
           this.region = region;
           // ...
       }
  
       exports = Service;
  
  })(module.exports, require);
  </code></pre>
  
  <p>Whenever I try to <code>require('./service')</code> on another module, I get an empty object as if the <code>exports</code> object was never set.</p>
  
  <p>If I use <code>module.exports</code> without the argument encapsulation, everything works fine:</p>
  
  <pre><code>(function (require) {
  
     // ...
       var Service = function (name, region) {
           this.name = name;
           this.region = region;
           // ...
       }
  
       module.exports = Service;
  
  })(require);
  </code></pre>
  
  <p>Why does this happen and why is this required?</p>