nit: better to do `buffer.write(source, length)`.

The APIs look symmetric, but `read` is allowed to do partial reads and `write` is not allowed to do partial writes. (Ever call to `read` should inspect the return value).

In this case it's academic because read won't return prematurely on buffer-to-buffer reads.