is the [len] return value wrapped in the `unit io` then?  or does the comment need updating?