In a Java-based environment, a dynamic proxy runtime provides a client
with the ability to asynchronously invoke an interface method, thereby
unblocking the client and allowing it to perform other tasks while
waiting for results to be returned from the runtime. The original
interface is not redefined nor is the real target object implementation
modified. Rather, the runtime defines rules which the client employs to
define an additional asynchronous interface to supplement the original
interface.