@Override
    public AWSSessionCredentials getCredentials() {
        return refreshableTask.getValue().getSessionCredentials();
    }
Method will return valid session credentials or throw an AmazonClientException due to STS
service time-out or thread interruption. The first call will block until valid session
credentials are fetched. Subsequent calls will re-use fetched credentials that are still
valid. Expiring credentials are automatically refreshed via a background thread. Multiple
threads may call this method concurrently without causing simultaneous network calls to the
STS service. Care has been taken to resist Throttling exceptions.
aws-java-sdk-sts/src/main/java/com/amazonaws/auth/STSSessionCredentialsProvider.java