rename: useRemote -> copyToPeer
improve copyToPeer

Running 'async' is expensive because it spawns a bound thread. If the source and destination contexts are the same, just return immediately.