Execute the passed in function f and time it, if the time it takes to complete the function the function
execution exceeds the passed in timeout, call the passed in exceptionFun to create an instance
of StackDepthException and the implementation is responsible to handle it.
Execute the passed in function f and time it, if the time it takes to complete the function the function
execution exceeds the passed in timeout, call the passed in exceptionFun to create an instance
of StackDepthException and the implementation is responsible to handle it.
the maximum amount of time allowed for the passed function
the passed in function to be timed
the Signaler used to signal/interrupt the function when time limit exceeded
the function to create StackDepthException for failure
the T returned by function f
Trait that provides a
timeoutAfterconstruct, which allows you to specify a timeout for an operation passed as a by-name parameter, as well as a way to signal/interrupt it if the operation exceeds its time limit.