Refactoring to add protocol for generic network promises and making the basic implementation named after it and conform to it.