dontDecodeRemotableOrPromiseFromCapData = slotEncoding =>
  Fail`remotable or promise unexpected: ${slotEncoding}`
@typedef {object} DecodeOptions
@property {(
  encodedRemotable: Encoding,
  decodeRecur: (e: Encoding) => Passable
) => (Promise|RemotableObject)} [decodeRemotableFromCapData]
@property {(
  encodedPromise: Encoding,
  decodeRecur: (e: Encoding) => Passable
) => (Promise|RemotableObject)} [decodePromiseFromCapData]
@property {(
  encodedError: Encoding,
  decodeRecur: (e: Encoding) => Passable
) => Error} [decodeErrorFromCapData]