derive result timeout with a simple sum of async timeouts

plus an extra 1/10 of a second for each sync task. also, don't allow the
result call to fire off unscheduled dependencies. instead, i'm adding
the state of each dependency to the exception message.