Added a defer_refresh parameter to AutoRefreshableSession!
Someone recently asked me in a thread on Reddit about the difference between the RefreshableCredentials and DeferredRefreshableCredentials objects in botocore. That question got me thinking that I should finally add a defer_refresh option to AutoRefreshableSession so that users can choose between lazy and active temporary credential refreshes, which is something I planned on doing eventually but had not prioritized yet.
For context, the DeferredRefreshableCredentials object does not refresh temporary credentials until those credentials are explicitly needed; however, the RefreshableCredentials object refreshes temporary credentials the moment that they expire. The former is lazy; the latter is active. It is possible that the latter might be inefficient in some systems, hence my decision to finally include defer_refresh as a parameter.
Please note that, according to one user, DeferredRefreshableCredentials is leaking memory. I have not tested that claim myself; however, it may, according to their analysis, be something to be mindful of. You may, therefore, want to use defer_refresh=False in the meantime until that issue is resolved. I will monitor the issue and update the version of boto3 in pyproject.toml accordingly.