protocolOrThrow