'use strict'

function reusify (Constructor) {
  var head = new Constructor()

  function get () {
    var current = head

    if (current.next) {
      head = current.next
    } else {
      head = new Constructor()
    }

    current.next = null

    return current
  }

  function release (obj) {
    head.next = obj
  }

  return {
    get: get,
    release: release
  }
}

module.exports = reusify

'use strict'

function reusify (Constructor) {
  var head = new Constructor()
  var tail = head

  function get () {
    var current = head

    if (current.next) {
      head = current.next
    } else {
      head = new Constructor()
      tail = head
    }

    current.next = null

    return current
  }

  function release (obj) {
    tail.next = obj
    tail = obj
  }

  return {
    get: get,
    release: release
  }
}

module.exports = reusify

Revert "Removed superfluous assignments to 'tail'"
Revert "Removed superfluous assignments to 'tail'"

This reverts commit c7bce38240926b9bb51f1b94472f63c408105ff0.
