The calling thread will suspend execution and runthr. Does not return until
thr exits or until limit seconds have passed. If the time
limit expires, nil will be returned, otherwise thr is
returned.

Any threads not joined will be killed when the main program exits. If thr had
previously raised an exception and the abort_on_exception and
$DEBUG flags are not set (so the exception has not yet been
processed) it will be processed at this time.