type ResultFunc … type result … // Return processes the result returned by a ResultFunc function func (r *result) Return() (runtime.Object, error) { … } type PostTimeoutLoggerFunc … const postTimeoutLoggerWait … // FinishRequest makes a given ResultFunc asynchronous and handles errors returned by the response. func FinishRequest(ctx context.Context, fn ResultFunc) (runtime.Object, error) { … } func finishRequest(ctx context.Context, fn ResultFunc, postTimeoutWait time.Duration, postTimeoutLogger PostTimeoutLoggerFunc) (runtime.Object, error) { … } // logPostTimeoutResult logs a panic or an error from the result that the sender (goroutine that is // executing the ResultFunc function) has sent to the receiver after the request had timed out. // timedOutAt is the time the request had been timed out func logPostTimeoutResult(timedOutAt time.Time, r *result) { … }