if( DoSomething() ) goto fail; else if(DoSomethingElse()) goto fail; goto fail; else if(DoSomethingOtherThanElse()) goto fail;
int err = 0; if(!err) err = DoSomething(); if(!err) err = DoSomethingElse(); if(!err) err = DoSomethingOtherThanElse(); if(err) goto fail;
err = Chain(DoSomething).Then(DoSomethingElse).Then(DoSomethingOtherThanElse);