diff --git a/src/Storage.php b/src/Storage.php index 80a1789..7908cef 100644 --- a/src/Storage.php +++ b/src/Storage.php @@ -194,6 +194,8 @@ public function count(array $filter = [], array $options = []) /** * @param $id * @param callable $lockCallback + * + * @return mixed */ public function lock($id, callable $lockCallback) { @@ -202,10 +204,13 @@ public function lock($id, callable $lockCallback) } $this->pessimisticLock->lock($id); + $result = null; try { if ($model = $this->findOne(['_id' => new ObjectID((string) $id)])) { - call_user_func($lockCallback, $model, $this); + $result = call_user_func($lockCallback, $model, $this); } + + return $result; } finally { $this->pessimisticLock->unlock($id); }