EDIT:
BTW I kind of stress tested WebIDE, uploaded ~250KB binary file to storage and upload was still pretty slow (minutes) but then download/view was much faster - like 10-20 seconds. So I guess WebIDE writes in 20 byte chunks but then reading back via notification use larger blocks. Or maybe it was writing to the flash that is so slow.
Espruino is a JavaScript interpreter for low-power Microcontrollers. This site is both a support community for Espruino and a place to share what you are working on.
I think it is espruino code that is broken, I have updated patch gist, the issue is here
https://gist.github.com/fanoush/74c17abed6cfc809d153d76b6752e1f1#file-espruino-configurable-mtu-diff-L136
maybe it is not correct to send always up to BLE_NUS_MAX_DATA_LEN which is just maximum for the buffer
EDIT:
BTW I kind of stress tested WebIDE, uploaded ~250KB binary file to storage and upload was still pretty slow (minutes) but then download/view was much faster - like 10-20 seconds. So I guess WebIDE writes in 20 byte chunks but then reading back via notification use larger blocks. Or maybe it was writing to the flash that is so slow.