Returns a new source that delegates to source, using this to implement timeouts. This works best if timedOut is overridden to interrupt source's current operation.