public function acquire($cb)
{
Crypt::randomString(16, null, function ($token) use($cb) {
$this->token = $token;
$this->pool->set($this->key, $this->token, 'NX', 'EX', $this->timeout, function ($redis) use($cb) {
$cb($this, $redis->result === 'OK', $redis);
});
});
return $this;
}