private C8oPromise <T> Then(C8oOnResponse <T> c8oOnResponse, bool ui) { if (nextPromise != null) { return(nextPromise.Then(c8oOnResponse, ui)); } else { c8oResponse = new KeyValuePair <C8oOnResponse <T>, bool>(c8oOnResponse, ui); nextPromise = new C8oPromise <T>(c8o); if (lastFailure != null) { nextPromise.lastFailure = lastFailure; nextPromise.lastParameters = lastParameters; } if (lastResponse != null) { c8o.RunBG(OnResponse); } return(nextPromise); } }