Put timeout on provider execution.

Use runPromise as the aggregation point instead of doing it in varios
places.