/// <summary>
/// TBD
/// </summary>
/// <returns>TBD</returns>
public override Task <(Address, TaskCompletionSource <IAssociationEventListener>)> Listen()
{
var upstreamListenerPromise = new TaskCompletionSource <IAssociationEventListener>();
return(WrappedTransport.Listen().ContinueWith(async listenerTask =>
{
var listenAddress = listenerTask.Result.Item1;
var listenerPromise = listenerTask.Result.Item2;
listenerPromise.TrySetResult(await InterceptListen(listenAddress, upstreamListenerPromise.Task).ConfigureAwait(false));
return (SchemeAugmenter.AugmentScheme(listenAddress), upstreamListenerPromise);
}, TaskContinuationOptions.ExecuteSynchronously).Unwrap());
}