Make downloads synchronous when pool size = 0

  Guillaume Nodet points out that having 0 pool size
  imply a single download thread is redundant, because
  a value of 1 would do the same thing.

  So instead, if the pool size is less than 1 we run
  the download future directly in the request thread.