limit the amount of extra workers to start when all the spare ones are busy

and gracefully return an error to the client if we reached the max number of busy workers
and we haven't been able to process a request after retrying 3 times