sink and duplex should throw if there is no callback provided, but transform should pass the error on to the sink (after destroying the node stream)