$mutex->check(function () use ($bankAccount, $amount) { return $bankAccount->getBalance() >= $amount; })->then(function () use ($bankAccount, $amount) { $bankAccount->withdraw($amount); });
public function check(callable $check) { $doubleCheckedLocking = new DoubleCheckedLocking($this); $doubleCheckedLocking->setCheck($check); return $doubleCheckedLocking; }