HTTP 303 · See Other
USER_MIGRATE_X
The user whose identity is being used to execute queries is associated with DC %v.
HTTP 303
Migration
Parameterized
When & why it happens
The current user lives on a different DC. Reconnect to DC X before retrying.
Parameterized error
The wire code carries a parameter on its tail (literal you'll see: USER_MIGRATE_42). Gogram parses it out and stores it on ErrResponseCode.AdditionalInfo with the right type.
Handling in gogram
Surfaced as *gogram.ErrResponseCode. Match on the message:
if err, ok := err.(*gogram.ErrResponseCode); ok {
if strings.HasPrefix(err.Message, "USER_MIGRATE") {
secs := err.AdditionalInfo.(int)
time.Sleep(time.Duration(secs) * time.Second)
// retry
}
}