acquire(); try { return yield call($callback, ...$args); } finally { $lock->release(); } }); }