Fold Sync and Error executors into ThenExecutor
Simplifies and code, the differentiation between sync and other continuation was unnecesary and artificial.