Fix #1: Add exponential backoff