internal void err(Err e)
{
ArrayList wd;
lock (this)
{
m_state = DONE_ERR;
m_result = e;
Monitor.PulseAll(this);
wd = whenDone; whenDone = null;
}
sendWhenDone(wd);
}
internal void _dispatch(Future future) { try { if (future.isCancelled()) { return; } if (m_pool.m_killed) { future.cancel(); return; } future.set(receive(future.m_msg)); } catch (Err.Val e) { future.err(e.m_err); } catch (System.Exception e) { future.err(Err.make(e)); } }