implement something that works like mv, which tries rename first, and if that fails copies the bytes. rename doesn't work across devices
only delete if there were no io errors
and return an error
||, not &&
Merge remote-tracking branch 'origin/diffbot' into diffbot-dan