If a remote procedure call system is to be truly location and access transparent, it should provide the same semantics as local procedure call.
Most procedural languages provide recursion.
To this end, a remote procedure call system should provide recursion remotely as well. In this sense, a client may also be a server if some of its procedures are available to other clients. A choice is usually made as to whether the client may be called by servers as a result of calls to those servers, or by arbitrary clients at any time.