var util = require('util')

var EventEmitter = require('eventemitter3').EventEmitter

function RiskyStream(stream) {
  EventEmitter.call(this)

  this.endListener = function() {
    this.ended = true
    this.stream.removeListener('end', this.endListener)

    if (!this.expectingEnd) {
      this.emit('unexpectedEnd')
    }

    this.emit('end')
  }.bind(this)

  this.stream = stream
    .on('end', this.endListener)
  this.expectingEnd = false
  this.ended = false
}

util.inherits(RiskyStream, EventEmitter)

RiskyStream.prototype.end = function() {
  this.expectEnd()
  return this.stream.end()
}

RiskyStream.prototype.expectEnd = function() {
  this.expectingEnd = true
  return this
}

module.exports = RiskyStream
