     private func willWrite(uuid: BluetoothUUID, handle: UInt16, value: Data, newValue: Data) async -> ATTError? {
         let request = GATTWriteRequest(
             central: central,
-            maximumUpdateValueLength: await maximumUpdateValueLength(),
+            maximumUpdateValueLength: await maximumUpdateValueLength,
             uuid: uuid,
             handle: handle,
             value: value,

    private func willRead(uuid: BluetoothUUID, handle: UInt16, value: Data, offset: Int) async -> ATTError? {
        let request = GATTReadRequest(
            central: central,
            maximumUpdateValueLength: await maximumUpdateValueLength(),
            uuid: uuid,
            handle: handle,
            value: value,

    func writeValue(_ value: Data, forCharacteristic handle: UInt16) async {
        await server.writeValue(value, forCharacteristic: handle)
    }
    
    var maximumUpdateValueLength: Int {
        get async {
            // ATT_MTU-3
            return await Int(server.maximumTransmissionUnit.rawValue) - 3
        }
    }
    
    // IO error
