Peer-to-peer (P2P) systems are strongly decentralized and asynchronous distributed settings involving a potentially large number of hosts. A common programing model for P2P infrastructures is that of a distributed hashtable (DHT), though which peers share resources they host. On the quest for a corresponding object-oriented high-level programming abstraction, a core question has turned out to be how to represent and handle resources, such that they could capture the broad variety of P2P applications. Answering this question has brought us to revisit parameter passing semantics. This papers presents lazy parameter passing, a parameter passing model which combines the best of pass-by-value and pass-by-reference semantics, and is not limited to P2P settings, but is appealing for any asynchronous distributed object setting. We have put lazy parameter passing to work in a high-level general abstraction for P2P programming, with prototypes for Java and .NET. In this paper, we illustrate the principle of lazy parameter passing through former prototype. We depict the role of Java's concept of dynamic proxies in the implementation of our novel parameter passing semantics, and other distinctive features of our abstraction, and present a general extension to that concept whose scope exceeds by far the context given by our abstraction.