package ioutils import ( "io" "time" ) type RetryWriter struct { io.Writer } func (w *RetryWriter) Write(p []byte) (int, error) { ntotal := 0 var err error for len(p) > 0 { n, err := w.Writer.Write(p) p = p[n:] ntotal += n if err != nil && err != io.ErrShortWrite { break } if len(p) > 0 { time.Sleep(10 * time.Millisecond) } } return ntotal, err }