Ought `StreamTarget::close` return an opaque wrapper?

MR !1476 (merged) adds this API to StreamTarget

    pub(crate) fn close(&self, msg: relaymsg::End) -> Result<oneshot::Receiver<Result<()>>> {

Do you think it would make sense for this to return an Result<impl Future> or some opaque type, instead of a Result<oneshot::Receiver>? As it stands, it feels like the use of a oneshot::Reciever here will tie our API to a particular implementation detail.

cc @gabi-250