actor BankAccount { // .... var isOpen = true func close() async throws -> Double { if isOpen { do { try await BankServer.requestToClose(self.id) if self.isOpen { self.isOpen = false return self.balance } else { throw BankError.alreadyClosed } } catch { throw BankError.cannotClose } } else { throw BankError.alreadyClosed } } }