 
   release: (cb) ->
     return setImmediate cb unless @_reserve_key?  # nothing reserved here
+    return setImmediate cb if @_lost_reservation
 
     clearInterval @_heartbeat if @_heartbeat? # we're done here, no more heartbeats
     @_init_redis()

      (cb_wf) => @_redis.get @_reserve_key, cb_wf
      (reserved_by, cb_wf) =>
        unless reserved_by?  # we losts it
          throw new Error "Worker #{@_reserve_val} lost reservation for #{@_reserve_key}"
        unless reserved_by is @_reserve_val  # they stole the precious!!!
          throw new Error "Worker #{@_reserve_val} lost #{@_reserve_key} to #{reserved_by}"
        @_set_expiration cb_wf
    ], (err, expire_state) =>


module.exports = class ReserveResource
  constructor: (@by, @host, @port, @heartbeat_interval, @lock_ttl, @log=console.log) ->
    @_lost_reservation = false
    return

  lock: (resource, cb) ->
