|  | 
| 20 | 20 | // USE OR OTHER DEALINGS IN THE SOFTWARE. | 
| 21 | 21 | 
 | 
| 22 | 22 | 'use strict'; | 
| 23 |  | -require('../common'); | 
|  | 23 | +const common = require('../common'); | 
| 24 | 24 | const assert = require('assert'); | 
| 25 | 25 | const http = require('http'); | 
| 26 | 26 | 
 | 
| 27 |  | -let outstanding_reqs = 0; | 
| 28 | 27 | const test_req_body = 'some stuff...\n'; | 
| 29 | 28 | const test_res_body = 'other stuff!\n'; | 
| 30 | 29 | let sent_continue = false; | 
| 31 | 30 | let got_continue = false; | 
| 32 | 31 | 
 | 
| 33 |  | -function handler(req, res) { | 
| 34 |  | -  assert.strictEqual(sent_continue, true, | 
| 35 |  | -                     'Full response sent before 100 Continue'); | 
|  | 32 | +const handler = common.mustCall((req, res) => { | 
|  | 33 | +  assert.ok(sent_continue, 'Full response sent before 100 Continue'); | 
| 36 | 34 |   console.error('Server sending full response...'); | 
| 37 | 35 |   res.writeHead(200, { | 
| 38 | 36 |     'Content-Type': 'text/plain', | 
| 39 | 37 |     'ABCD': '1' | 
| 40 | 38 |   }); | 
| 41 | 39 |   res.end(test_res_body); | 
| 42 |  | -} | 
|  | 40 | +}); | 
| 43 | 41 | 
 | 
| 44 |  | -const server = http.createServer(handler); | 
| 45 |  | -server.on('checkContinue', function(req, res) { | 
|  | 42 | +const server = http.createServer(); | 
|  | 43 | +server.on('checkContinue', common.mustCall((req, res) => { | 
| 46 | 44 |   console.error('Server got Expect: 100-continue...'); | 
| 47 | 45 |   res.writeContinue(); | 
| 48 | 46 |   sent_continue = true; | 
| 49 | 47 |   setTimeout(function() { | 
| 50 | 48 |     handler(req, res); | 
| 51 | 49 |   }, 100); | 
| 52 |  | -}); | 
|  | 50 | +})); | 
| 53 | 51 | server.listen(0); | 
| 54 | 52 | 
 | 
| 55 | 53 | 
 | 
| 56 |  | -server.on('listening', function() { | 
|  | 54 | +server.on('listening', common.mustCall(() => { | 
| 57 | 55 |   const req = http.request({ | 
| 58 |  | -    port: this.address().port, | 
|  | 56 | +    port: server.address().port, | 
| 59 | 57 |     method: 'POST', | 
| 60 | 58 |     path: '/world', | 
| 61 | 59 |     headers: { 'Expect': '100-continue' } | 
| 62 | 60 |   }); | 
| 63 | 61 |   console.error('Client sending request...'); | 
| 64 |  | -  outstanding_reqs++; | 
| 65 | 62 |   let body = ''; | 
| 66 |  | -  req.on('continue', function() { | 
|  | 63 | +  req.on('continue', common.mustCall(() => { | 
| 67 | 64 |     console.error('Client got 100 Continue...'); | 
| 68 | 65 |     got_continue = true; | 
| 69 | 66 |     req.end(test_req_body); | 
| 70 |  | -  }); | 
| 71 |  | -  req.on('response', function(res) { | 
| 72 |  | -    assert.strictEqual(got_continue, true, | 
| 73 |  | -                       'Full response received before 100 Continue'); | 
|  | 67 | +  })); | 
|  | 68 | +  req.on('response', common.mustCall((res) => { | 
|  | 69 | +    assert.ok(got_continue, 'Full response received before 100 Continue'); | 
| 74 | 70 |     assert.strictEqual(200, res.statusCode, | 
| 75 | 71 |                        `Final status code was ${res.statusCode}, not 200.`); | 
| 76 | 72 |     res.setEncoding('utf8'); | 
| 77 | 73 |     res.on('data', function(chunk) { body += chunk; }); | 
| 78 |  | -    res.on('end', function() { | 
|  | 74 | +    res.on('end', common.mustCall(() => { | 
| 79 | 75 |       console.error('Got full response.'); | 
| 80 |  | -      assert.strictEqual(body, test_res_body, 'Response body doesn\'t match.'); | 
|  | 76 | +      assert.strictEqual(body, test_res_body); | 
| 81 | 77 |       assert.ok('abcd' in res.headers, 'Response headers missing.'); | 
| 82 |  | -      outstanding_reqs--; | 
| 83 |  | -      if (outstanding_reqs === 0) { | 
| 84 |  | -        server.close(); | 
| 85 |  | -        process.exit(); | 
| 86 |  | -      } | 
| 87 |  | -    }); | 
| 88 |  | -  }); | 
| 89 |  | -}); | 
|  | 78 | +      server.close(); | 
|  | 79 | +      process.exit(); | 
|  | 80 | +    })); | 
|  | 81 | +  })); | 
|  | 82 | +})); | 
0 commit comments