I2C gives write error but register is updated DFR0706

I want to use Node Red to control my I2C bus and devices on a Unihiker M10 because there are some nice Nodes for my chips.
But I get an error every time I try to write to a devices register from Node Red or the Command prompt. However despite the error the register is updated.
In Python with the PinPong library all works fine.
For example I'm pulling pin 1 up on a MCP23008 I/O extender:
An error but pin was pulled up.
The same comes when using the command prompt:
root@unihiker:~# i2cget 4 0x21 0x09
0x00
root@unihiker:~# i2cset 4 0x21 0x09 0x01
Error: Write failed
root@unihiker:~# i2cget 4 0x21 0x09
0x01
As you can see from the commands, despite the error the register was updated.
When using PinPong in Python no error occurs.
The errors in Node Red cause the flows to break and more complicated I2C nodes not work.
Did I miss anything? Or is it an issue on the Unihiker?
I'm very disappointed that I can't use Node Red for I2C communication.
To be more clear: the command i2cset writes successfully AND returns an Error Write failed. (same applies to Node Red example)
This looks like a software implementation bug to me.
Anyone from DFRobot willing to look into it?

That does not solve my problem, both Byte and Word writes give the same error:
root@unihiker:~# i2cset -y 4 0x21 0x09 0x0100 w
Error: Write failed

Use the SMBus variant instead of plain I²C. In Python, you can choose between:
i2c_smbus_write_byte_data
i2c_smbus_write_word_data
These don’t trigger the error.
Node-RED nodes sometimes let you pick between writeByte / writeWord (SMBus style) vs. raw I²C — try switching modes.
