function WriteStream(path, options) {
          if (!(this instanceof WriteStream)) return new WriteStream(path, options)

          Stream.call(this)

          this.path = path
          this.fd = null
          this.writable = true

          this.flags = 'w'
          this.encoding = 'binary'
          this.mode = 438 /*=0666*/
          this.bytesWritten = 0

          options = options || {}

          // Mixin options into this
          var keys = Object.keys(options)
          for (var index = 0, length = keys.length; index < length; index++) {
            var key = keys[index]
            this[key] = options[key]
          }

          if (this.start !== undefined) {
            if ('number' !== typeof this.start) {
              throw TypeError('start must be a Number')
            }
            if (this.start < 0) {
              throw new Error('start must be >= zero')
            }

            this.pos = this.start
          }

          this.busy = false
          this._queue = []

          if (this.fd === null) {
            this._open = fs.open
            this._queue.push([this._open, this.path, this.flags, this.mode, undefined])
            this.flush()
          }
        }
We allow headers from the older spec drafts if strict parsing isn't
specified in options.