Shouldn't we use a `TaskExecutor` here rather than consuming one of the (possibly) default scheduler threads for a long-running task?