code: function acquire(timeToLive, requestorId, task) {
    timeToLive    = timeToLive || DEFAULT_TIME_TO_LIVE;
  
    if(!requestorId) {
      throw new TypeError('RequestorIdNotPresent');
    }
    if(!task) {
      throw new TypeError('TaskNotFound');
    }
    if(isTaskLocked(task)) {
      if(isLockHolder(task, requestorId)) {
  
        task.semaphore.time  = timestamp();
  
        return task;
      }
  
      throw new LockError('TaskAlreadyLocked');
    }
  
    task.semaphore  = {
      key:          hashKey(requestorId, task.id),
      time:         timestamp(),
      ttl:          timeToLive
    };
  
    return task;
  }
docs: Acquire a lock against a task.
  ------------------------------
  @param {int} timeToLive
  @param {string} requestorId
  @param {Task} task
  @return {Task}
  @throws {TypeError}
  @throws {LockError}
  @api {public}