added functional retry option

also pulled `retry`, `retryTimeout` and `timeout` out of options hash once the function starts