A callout is a request that a method be invoked automatically by the driver after a certain period of time has elapsed. For example, when you introduce yourself to an NPC, the NPC initiates a callout that, a couple seconds later, invokes a method causing the NPC to introduce itself back to you.
The easiest way to initiate a callout is via the mudlib.callout.addCallout method. This method accepts four arguments: the delay in seconds, the object that should be made "active" prior to invocation of the method, the method that should be invoked, and (optionally) a single argument to pass to the method.
There are a few things that should be noted. First, the delay in seconds is a minimum delay, not an exact delay. That is, the driver guarantees that at least the specified number of seconds will pass before the method is invoked, but makes no guarantee as to exactly when the invocation will occur. For example, if you request a two second delay, at least two seconds will pass, but it's possible the method won't be invoked until three or four seconds later.
Second, the active object must be specified as the second parameter. The active object is typically maintained by the driver and is what is returned by the mudlib.stdlib.thisPlayer() method. Normally, the active object is set based on context, but there is no context in the case of callouts, and thus the desired active object must be specified. Typically, the active object will be the same as the object in which the method is being invoked, but that's not always the case.
Finally, the last (optional) parameter may consist of an argument that is to be passed to the target method. Note that only a single argument may be given at this time. If multiple pieces of data are needed, then you may need to pass a tuple or some other collection. In the future, this will probably be modified so that any number of arguments can be passed, but at present only one is allowed.
See the callout module documentation for more details.