correctly initialize semaphore for all BasicFuture implementations