hijack('onParsePartData', function () { callbacks.partData++; }); hijack('onParsePartEnd', function () { callbacks.partEnd++; }); form.on('finish', function () { callbacks.end++; }); var start = new Date(); form.write(buffer, function (err) { var duration = new Date() - start; assert.ifError(err); var mbPerSec = (mb / (duration / 1000)).toFixed(2); console.log(mbPerSec + ' mb/sec'); }); //assert.equal(nparsed, buffer.length); function createMultipartBuffer(boundary, size) { var head = '--' + boundary + '\r\n' + 'content-disposition: form-data; name="field1"\r\n' + '\r\n' , tail = '\r\n--' + boundary + '--\r\n' , buffer = new Buffer(size); buffer.write(head, 'ascii', 0); buffer.write(tail, 'ascii', buffer.length - tail.length);