Handle Rate-limits
To avoid excessive overload of our API we limit the rate at which we process your requests. This means your program may from time to time run into a rate limit. To let you gracefully handle retries by waiting until a rate limit resets, we expose the deadline and a done channel much like Go's network context does. Here's how you may use this feature:
var acc *tzpro.Account
for {
    var err error
    acc, err = tzpro.GetAccount(ctx, tezos.MustParseAddress("tz1irJKkXS2DBWkU1NnmFQx1c1L7pbGg4yhk"))
    if err != nil {
        if e, ok := tzpro.IsRateLimited(err); ok {
            fmt.Printf("Rate limited, waiting for %s\n", e.Deadline())
            select {
            case <-ctx.Done():
                // wait until external context is canceled
                err = ctx.Err()
            case <-e.Done():
                // wait until rate limit reset and retry
                continue
            }
        }
    }
    break
}
// handle error and/or result here