Acquire a Permit, asynchronously.
Acquire a Permit, asynchronously. Be sure to permit.release() in a 'finally' block of your onSuccess() callback.
Interrupting this future is only advisory, and will not release the permit if the future has already been satisfied.
a Future[Permit] when the Future is satisfied, computation can proceed, or a Future.Exception[RejectedExecutionException] if the configured maximum number of waitq would be exceeded.