Posted to tcl by kostix at Mon Apr 07 23:06:39 GMT 2008view pretty

proc foo {id} {
    variable $id; upvar 0 $id state

    after 1000 [list bar $id]

    set token [namespace current]::${id}(result)
}

proc bar {id} {
    variable $id; upvar 0 $id state

    unset state

    quux "some error"
}

proc quux {reason} {
    return -code error $reason
}

proc waiter {id} {
    set token [foo $id]

    vwait $token
}

waiter 0xdeadbeef

puts OK