Optionally allow input methods to return promises